2017-10-10 73 views
-2

我應該計算數組中給定的素數的根和平方。在陣列上使用循環

結果應該被存儲在兩個新的數組中。我的解決辦法是:

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)); 
      } 
     } 
    } 
} 

可惜的是,我的解決方案的結果是:

[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

您是否需要將方格和根存儲在數組中,或者只是將它們打印出來?另外,爲什麼你只打印我== 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