[英]array based on user input, error?
我几次检查了这段代码,我真的不明白为什么会收到错误消息:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 6
at qrt2.practice.main(practice.java:34)
我正在使用Eclips标准SDK
和代码是:
package qrt2;
import javax.swing.*;
public class practice {
public static void main(String[] args) {
//creating JOption for the input
String num1 = JOptionPane.showInputDialog("Enter the first number");
int x = Integer.parseInt(num1);
String num2 = JOptionPane.showInputDialog("Enter the first number");
int y = Integer.parseInt(num2);
String num3 = JOptionPane.showInputDialog("Enter the first number");
int z = Integer.parseInt(num3);
String num4 = JOptionPane.showInputDialog("Enter the first number");
int v = Integer.parseInt(num4);
String num5 = JOptionPane.showInputDialog("Enter the first number");
int h = Integer.parseInt(num5);
String num6 = JOptionPane.showInputDialog("Enter the first number");
int k = Integer.parseInt(num6);
//creating array
int [] ary = new int []{x,y,z,v,h,k};
int counter;
for( counter=0;counter<ary.length;counter++);
System.out.println(counter + " " + ary[counter]);
}
}
从for
语句中删除结尾的半冒号
for (counter = 0; counter < ary.length; counter++);
^
通过将分号保留在原位, counter
等于ary.length
到达此语句
System.out.println(counter + " " + ary[counter]);
由于数组从零开始,这将导致ArrayIndexOutOfBoundsException
除非在循环外需要变量counter
否则将其移至for
语句初始化部分,如下所示
for (int counter=0; counter < ary.length; counter++) {
System.out.println(counter + " " + ary[counter]);
}
这将使ary[counter]
表达式立即显示出编译失败。 注意,花括号也使范围清晰。
for(counter=0;counter<ary.length;counter++) {
System.out.println(counter + " " + ary[counter]);
}
删除分号,并用卷曲的开口括号代替。 然后在输出后关闭大括号。
而且,如果您想运用最佳实践,还应该在循环内声明计数器变量,如下所示:
for(int counter = 0; counter < ary.length; counter++) {}
从for循环中删除分号。
for (counter = 0; counter < ary.length; counter++)
{
}
您的问题在于以下几行:
for( counter=0;counter<ary.length;counter++);
System.out.println(counter + " " + ary[counter]);
具体来说,第一个完成循环,第二个执行循环-在循环完成之后,计数器增加到数组的长度之外(因此退出循环)。 您需要在循环内进行打印,因此这两行应为:
for( counter=0;counter<ary.length;counter++)
System.out.println(counter + " " + ary[counter]);
(请注意,在第一行的末尾删除了分号)。 或者,更明确地说:
for( counter=0;counter<ary.length;counter++) {
System.out.println(counter + " " + ary[counter]);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.