【问题标题】:Using for loop on arrays在数组上使用 for 循环
【发布时间】:2017-10-10 15:22:05
【问题描述】:

我应该计算数组中素数的根和平方。

结果都应该存储在两个新数组中。我的解决方案是:

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]

请帮帮我。

【问题讨论】:

  • 在询问与代码相关的问题时,您应该在问题中添加一个标签,表明代码使用的是哪种编程语言。
  • double[] root = new double[primeNumbers.length-1]; 在每次迭代时创建一个新数组。也许那是你的问题。请接tour,通过help center,阅读How to Ask,尝试学习如何使用调试器
  • 您需要将平方和根存储在数组中,还是直接打印出来?另外,为什么只打印 i==primeNumbers.length-2?

标签: java arrays for-loop primes


【解决方案1】:

您在 for 循环中声明输出数组。尝试在 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 ));
    }
}

【讨论】:

  • 我们为什么要忽略数组的最后一个元素(我知道 OP 就是这样做的,但您的解决方案也是这样做的)。
  • 我想我不知道为什么 OP 这样做。我同意这很奇怪。
猜你喜欢
  • 2011-05-12
  • 2014-03-15
  • 1970-01-01
  • 2013-06-13
  • 1970-01-01
  • 2012-12-04
  • 2023-01-09
  • 1970-01-01
  • 2019-06-02
相关资源
最近更新 更多