所以到目前为止我的代码就是这个......
import javax.swing.*;
public class TestNo2{
public static void main(String[] args){
String[] nameNum = new String[0];
int numberNames;
JTextField inputName = new JTextField(5);
JPanel nameWindow = new JPanel();
nameWindow.add(new JLabel("How many names would you like to sort?"));
nameWindow.add(inputName);
int numNames = JOptionPane.showConfirmDialog(null, nameWindow
,"Accept and sort list of students."
,JOptionPane.OK_CANCEL_OPTION);
if(numNames == JOptionPane.OK_OPTION){
String numNamesS = inputName.getText();
numberNames = Integer.parseInt(numNamesS);
nameNum = new String[numberNames];
for(int counterOne=0;counterOne<nameNum.length;counterOne++){
for(int counterTwo=1;counterTwo<=nameNum.length;counterTwo++){
nameNum[numberNames] = JOptionPane.showInputDialog(null
,"Enter the name of student "+counterTwo
,"Name Input"
,JOptionPane.QUESTION_MESSAGE);
}
}
}
}
}
构建它时没有错误,但是当我运行程序时,我只能输入一个名称,然后发生错误。
这是出现的错误。
线程中的异常&#34; main&#34; java.lang.ArrayIndexOutOfBoundsException:3 在TestNo2.main(TestNo2.java:23)
感谢您抽出宝贵时间阅读本文。
答案 0 :(得分:0)
for(int counterTwo=1;counterTwo<=nameNum.length;counterTwo++){
应该是:
for(int counterTwo=1;counterTwo < nameNum.length;counterTwo++){
因为表达式counterTwo<=nameNum.length
导致数组超出其边界(记住数组的实际长度从零开始并且 1小于您指定的实际长度。
因此,如果您有一个定义如下的数组:
someArray[] something = {1,2,3,4,5,6};
something.length
的值为6
。但实际长度为 5
(计数为:0,1,2,3,4,5)。
为什么你有两个循环来获取名称并添加到String Array?只要一个就够了......
for(int counterOne=0;counterOne<nameNum.length;counterOne++){
nameNum[counterOne] = JOptionPane.showInputDialog(null
,"Enter the name of student "+(counterOne+1)
,"Name Input"
,JOptionPane.QUESTION_MESSAGE);
}
然后使用您计划使用的任何方法对数组nameNum
进行排序。