来自数组元素的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);
}