2017-10-10 4 views
-2

배열에 주어진 소수의 제곱과 근원을 계산해야합니다.배열에서 for 루프 사용

결과는 두 개의 새로운 배열에 저장되어야합니다. 내 솔루션이었다

import java.util.Arrays; 
import java.lang.Math; 

public class Array1 {  
    public static void main(String[] args) { 
     double[] primeNumbers = {3, 5, 7, 11, 13, 17}; 
     for (int i = 0; i < primeNumbers.length-1; i++) { 
      double[] root = new double[primeNumbers.length-1]; 
      root[i] = Math.sqrt(primeNumbers[i]); 
      if (i == primeNumbers.length-2) { 
       System.out.println(Arrays.toString(root)); 
      } 
     } 

     for (int i = 0; i < primeNumbers.length-1; i++) { 
      double[] square = new double[primeNumbers.length-1]; 
      square[i] = primeNumbers[i] * primeNumbers[i]; 
      if (i == primeNumbers.length-2) { 
       System.out.println(Arrays.toString(square)); 
      } 
     } 
    } 
} 

Unfortunatelly, 내 솔루션의 결과는 다음과 같습니다

[0.0, 0.0, 0.0, 0.0, 3.605551275463989] 

[0.0, 0.0, 0.0, 0.0, 169.0] 

여기 제발 도와주세요.

+0

코드와 관련된 질문을, 당신은 코드에 어떤 프로그래밍 언어를 나타내는 질문에 태그를 추가해야합니다 – crashmstr

+0

'더블 [] 루트 더블 = 새 [primeNumbers.length-1];'반복 할 때마다 새 배열을 만듭니다. 어쩌면 그건 네 문제 야. 제발 [둘러보기], [도움말], [질문], 디버거 사용법을 배우십시오. – Frakcool

+0

배열에 사각형과 뿌리를 저장해야합니까? 또한, 왜 i == primeNumbers.length-2 만 인쇄합니까? – DodgyCodeException

답변

0

출력 배열을 for 루프 안에 선언하고 있습니다. 과 같이 루프 외부의를 선언 시도해보십시오.

double[] root = new double[primeNumbers.length-1]; 
for (int i = 0; i < primeNumbers.length-1; i++) { 

    root[i] = Math.sqrt(primeNumbers[i]); 
    if (i == primeNumbers.length-2) { 
     System.out.println(Arrays.toString(root)); 
    } 
} 
double[] square = new double[primeNumbers.length-1]; 
for (int i = 0; i < primeNumbers.length-1; i++) { 

    square[i] = primeNumbers[i] * primeNumbers[i]; 
    if (i == primeNumbers.length-2) { 
     System.out.println(Arrays.toString(square)); 
    } 
} 
+0

배열의 마지막 요소를 무시하는 이유는 무엇입니까 (OP가하는 일임을 알고 있지만 해결 방법도 있습니다). – DodgyCodeException

+0

OP가 왜 그런지 잘 모르겠다. 나는 그것이 이상하다는 데 동의한다. – MisterMystery