2017-10-29 14 views
0

12 학년 컴퓨터 과학 수업 과제입니다. 다음과 같이프라임 피처 번호 옆에 텍스트 알림을 인쇄하는 방법은 무엇입니까?

내가 함께 어려움을 겪고 할당의 섹션을 읽

  • 소수있는 처음 20 피보나치 수의 결정합니다.

  • 기본 질문에서 "this is a prime"텍스트 알림을 인쇄물에 넣으십시오.

  • FibPrimes는 FibPrimes라는 배열에 저장합니다. 여기

내가 시도한 것입니다 : 하단 근처

, 내가 텍스트 통지를 인쇄 할 루프를 만들기 위해 시도 "이다 프라임"주어진 FibNum 요소는 FibPrime 동일한 있다면 요소. 이것은 작동하지 않았다. 문제 블록은 주석으로 식별됩니다. 나머지 프로그램은 괜찮습니다. 제거 문제 블록

package fibonaccinumbers; 

public class FibonacciNumbers { 

    public static void main(String[] args) { 

     // Creation of Fibonacci Numbers Array. 
     int [] FibNums = new int[20]; 
     FibNums[0] = 0; 
     FibNums[1] = 1; 

     // Creation if Fibonacci Primes Array. 
     int [] FibPrimes = new int[7]; 
     FibPrimes[0] = 2; 
     FibPrimes[1] = 3; 
     FibPrimes[2] = 5; 
     FibPrimes[3] = 13; 
     FibPrimes[4] = 89; 
     FibPrimes[5] = 233; 
     FibPrimes[6] = 1597; 

     // Printing first two fibonacci numbers. 
     System.out.println(0); 
     System.out.println(1 + "*"); 

     // Printing remaining fibonacci numbers up to 20th term. 
     for (int i=2; i<FibNums.length;i++){ // Begin number generation loop. 
      FibNums[i] = FibNums[i-1] + FibNums[i-2]; 

      // Checks if the fibonacci number is odd. 
      // A number is not odd if two divides into it evenly. 
      boolean oddcheck = true; 
      if (FibNums[i]%2==0){ 
       oddcheck = false; 
      } 

      // Prints odd fibonacci numbers with a star beside it. 
      // Prints even fibonacci numbers with no star beside it. 
      if (oddcheck == true){ 
      System.out.println(FibNums[i] + "*"); 
      } else { 
      System.out.println(FibNums[i]);  
      } 

      // PROBLEM BLOCK HERE. ************************ 
      // If any element in the FibPrimes array is equal to the FibNums 
      // array, then the number is a prime. 
      for (int n=0; n<=FibPrimes.length; n++){ 
       if (FibNums[i] == FibPrimes[n]){ 
        System.out.print(" " + "This is a prime."); 
       } 
      } 


     } // End number generation loop. 

    } 

} 

출력 :

0 
1* 
1* 
2 
3* 
5* 
8 
13* 
21* 
34 
55* 
89* 
144 
233* 
377* 
610 
987* 
1597* 
2584 
4181* 

이 (별은 홀수 번호를 식별 - 할당의 다른 섹션)와

출력 문제 블록 나머지 :

0 
1* 
1* 

나머지 숫자는 인쇄되지 않으며 문자 알림도 없음을 유의하십시오. .

내가 현재 가지고있는 것보다 더 나은 방법으로 문제를 해결할 수는 있지만 앞으로도 계속 수정할 것입니다. 더 자세한 정보가 필요하면 알려주세요. 고맙습니다.

감사합니다. @AJNeufeld 및 @YayPawSi. 솔루션을 사용하여 프로그램을 인쇄 할 수있었습니다. 개정 출력 :

0 
1* 
1* 
This is a prime. 2 
This is a prime. 3* 
This is a prime. 5* 
8 
This is a prime. 13* 
21* 
34 
55* 
This is a prime. 89* 
144 
This is a prime. 233* 
377* 
610 
987* 
This is a prime. 1597* 
2584 
4181* 
+0

에 오신 것을 환영합니다! 짐작하면, for (int n = 0; n <= FibPrimes.length; n ++) 루핑으로 인해 프로그램이 아마도 'ArrayIndexOutOfBoundsException'으로 충돌하고 있다고 말할 수 있습니다. 마지막 반복은 배열의 끝을 넘어 색인을 생성합니다. – AJNeufeld

+1

나는 당신의 임무가 당신이 예비 한 fibonacii 번호를 사전에 연구하고 배열을 저장하는 것을 기대하지 않는다고 확신합니다. 나는 fibonacii 번호가 소수인지 여부를 계산하고 FibPrimes에 저장해야한다고 확신합니다. –

+0

@StephenC이 댓글을 주셔서 감사합니다. 당신은 틀림없이 정확하다고 생각합니다. 임무에 어려움이 있었기 때문에, 나의 최우선 과제는 "기능"을 창출하는 것이 었습니다. 이것은 내 다음 목표가 될 것입니다. –

답변

0

이 ArrayIndexOutOfBoundException이다, 스택 오버플로

//Remove = sign for n < FibPrimes.length 
    for (int n = 0; n < FibPrimes.length; n++){ 
      if (FibNums[i] == FibPrimes[n]){ 
       System.out.print(" " + "This is a prime."); 
      } 
    }