有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java数学。来自数组元素的sqrt

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

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

    }
}

现在呢

1)我的第一个问题是,我的数组中有一些数字tab,然后在FOR循环中,我想在每一行中显示元素及其平方根。 但是对于第一个元素,我得到0.0作为平方根。为什么?其他结果对我来说也是错误的

我的结果是:

array size: 4
9    0.0
27    1.0
5    1.4142135623730951
77    1.7320508075688772

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

array size: 4
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 9

对于每个循环,我都犯了什么错误? 为什么eclipse显示我询问第9元素

提前感谢您的帮助-感谢您的所有回答:)


共 (3) 个答案

  1. # 1 楼答案

    问题是您试图从索引中的数组中检索数据, 要改变这一点:

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

    有了这个:

      for(double i : tab){
        System.out.println(i);
       }
    
  2. # 2 楼答案

    第一个问题: 您使用的不是数组中的元素,而是循环参数:

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

    (这将是正确的代码)

    第二个问题: 您使用的是foreach循环,因此不需要使用索引来获取数组元素:

    for(double i : tab){
        System.out.println(i);
    }
    
  3. # 3 楼答案

    But for the first element i get 0.0 as a square root. why?

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

    System.out.print(Math.sqrt(y));
    

    应该是:

    System.out.print(Math.sqrt(tab[y]));