Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
来自数组元素的java math.sqrt_Java_Arrays - Fatal编程技术网

来自数组元素的java math.sqrt

来自数组元素的java math.sqrt,java,arrays,Java,Arrays,我有两个问题。请在下面找到我的代码: public class Numbers { public static void main(String[] args) { double[] tab = { 9.0, 27, 5, 77 }; System.out.println("array size: " + tab.length); for (int y = 0; y < tab.length; y++) {

我有两个问题。请在下面找到我的代码:

public class Numbers {

    public static void main(String[] args) {
        double[] tab = { 9.0, 27, 5, 77 };
        System.out.println("array size: " + tab.length);

        for (int y = 0; y < tab.length; y++) {
            System.out.printf("%d", (int) tab[y]);
            System.out.print("    ");
            System.out.print(Math.sqrt(y));
            System.out.println();
        }

        // for(double i:tab){
        // System.out.println(tab[(int) i]);
        // }

    }
}
2) 第二个问题是我的for-each循环被注释了。但是,当您取消注释它时,它不起作用,因为我得到了一个错误。 输出:

array size: 4
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 9
对于每个循环,我做错了什么? 为什么eclipse显示我询问第9元素

提前感谢您的帮助-非常感谢所有答案:)

但是对于第一个元素,我得到0.0作为平方根。为什么?

因为您得到的是循环索引的平方根,而不是存储在索引中的值

System.out.print(Math.sqrt(y));
应改为

System.out.print(Math.sqrt(tab[y]));
第二个问题是我的for-each循环被注释了。但是,当您取消注释它时,它不起作用,因为我得到了一个错误

您只是误解了“增强for循环”的目的:

这就是你想要的。这个循环说:“给我
tab
的每个元素,一次一个,然后将它存储在
i
中,用于这个循环”。尽管您已将变量命名为
i
,但它不是循环索引,而是数组中保存的实际值

但是对于第一个元素,我得到0.0作为平方根。为什么?

因为您没有打印出元素的平方根,而是打印出索引的平方根。这:

System.out.print(Math.sqrt(y));
应该是:

System.out.print(Math.sqrt(tab[y]));
第一个问题: 您使用的不是数组中的元素,而是循环参数:

public static void main(String[] args) {
        double[] tab = { 9.0, 27, 5, 77 };
        System.out.println("array size: " + tab.length);

        for (int y = 0; y < tab.length; y++) {
            System.out.printf("%d", (int) tab[y]);
            System.out.print("    ");
            System.out.print(Math.sqrt(tab[y]));
            System.out.println();
        }
}

问题是您试图从索引中的数组中检索数据,超出了范围, 要更改此设置,请执行以下操作:

    for(double i : tab){ 
       System.out.println(tab[(int) i]);
      }
为此:

  for(double i : tab){
    System.out.println(i);
   }

请在每篇文章中提出一个问题。(你现在实际上已经得到了两个答案,每个问题一个答案。但是这些答案应该在不同的帖子中…)好的,对不起-我下次会做很多-这解释了一切:)
for(double i : tab){
    System.out.println(i);
}
    for(double i : tab){ 
       System.out.println(tab[(int) i]);
      }
  for(double i : tab){
    System.out.println(i);
   }