Java 为什么从arraylist打印时会得到一个超出边界的数组?
我似乎无法理解为什么我试图打印的数组在我尝试将其附加到JTextArea时抛出一个数组越界错误 两个数组都已初始化为从零开始Java 为什么从arraylist打印时会得到一个超出边界的数组?,java,swing,arraylist,error-handling,indexoutofboundsexception,Java,Swing,Arraylist,Error Handling,Indexoutofboundsexception,我似乎无法理解为什么我试图打印的数组在我尝试将其附加到JTextArea时抛出一个数组越界错误 两个数组都已初始化为从零开始 private ArrayList<String> UniResponse = new ArrayList(0); private ArrayList<String> CHOICES = new ArrayList(0); private ArrayList UniResponse=new ArrayLis
private ArrayList<String> UniResponse = new ArrayList(0);
private ArrayList<String> CHOICES = new ArrayList(0);
private ArrayList UniResponse=new ArrayList(0);
私有ArrayList选项=新建ArrayList(0);
uniPicksString、UniResponse和CHOICES是从不同对象传递的数组,但它们也已初始化为从0开始
此方法以字符串类型返回数组列表的元素
String receiveAdminResponse() {
Iterator<String> itr = UniResponse.iterator();
String hold = null;
int count=0;
System.out.println("\n inside Student class = pringint decision array");
for (count = 0;count < UniResponse.size(); count++) {
System.out.println(UniResponse.get(count));
}
while(itr.hasNext() && count<UniResponse.size()) {
hold = UniResponse.get(count);
}
return hold;
}
String receiveAdminResponse(){
迭代器itr=UniResponse.Iterator();
字符串保持=null;
整数计数=0;
System.out.println(“\n在学生类中=pringint决策数组”);
对于(count=0;count while(itr.hasNext()&&count我认为不会执行以下while。在for循环结束之前,计数值等于UniResponse.size()。因此该条件将失败
while(itr.hasNext()&&count)
我认为您在方法returnProfile()上得到的索引超出了范围。
您正在遍历选项,并且在其中使用了另一个变量ApplicantArray。选项和ApplicantArray的大小是否相同?如果不是,并且ApplicantArray的大小小于选项,则您将陷入越界异常。我认为不会执行以下while。在for循环结束之前,计数值Is等于UniResponse.size()。因此该条件将失败
while(itr.hasNext()&&count)
我认为您在方法returnProfile()上得到的索引超出了范围。
您正在迭代选择,并在其中使用另一个变量ApplicanArray。选择和ApplicanArray大小相同吗?如果不相同,并且ApplicanArray大小小于选择,则您将陷入越界异常。正如注释所述,ApplicanArray
很可能比选择小e>
尽管如此,count
仍然等于UniResponse.size()
,因此while
循环条件从一开始计算为false
,因此返回一个null
值
不,它改变了什么,很难理解你需要什么
是否可以创建一个try-catch语句来忽略抛出的错误并打印arraylist
try/catch
无法处理忽略错误
另外,第二个函数中的if
语句是无用的。您在if
和else
主体中都做了同样的事情。正如评论所说,applicationarray
很可能比选项
小
尽管如此,count
仍然等于UniResponse.size()
,因此while
循环条件从一开始计算为false
,因此返回一个null
值
不,它改变了什么,很难理解你需要什么
是否可以创建一个try-catch语句来忽略抛出的错误并打印arraylist
try/catch
无法处理忽略错误
另外,第二个函数中的if
语句是无用的。你在if
和else
主体中都做了同样的事情。J如何说我认为这种情况:
while (itr.hasNext() && count<UniResponse.size())
while(itr.hasNext()&&countJ如何说我认为这种情况:
while (itr.hasNext() && count<UniResponse.size())
while(itr.hasNext()&&count除此之外,现在是开始遵循Java命名约定的好时机。尽早养成良好习惯很重要。接下来,您能否提供一个而不仅仅是片段,并确保显示确切的异常,包括堆栈跟踪?您正在调用ArrayList.get()
6次出现在您所展示的代码中,我们看不出哪一次出现异常。很可能您的applicationArray
比选项要小,现在是开始遵循Java命名约定的好时机。尽早养成好习惯很重要。下一步,可以您提供了一个而不仅仅是代码片段,并确保显示了确切的异常,包括堆栈跟踪?您正在调用ArrayList.get()
6次显示在您显示的代码中,我们看不到哪一次抛出异常。很可能您的applicationarray
小于CHOICES
arrayApplicantArray是对象的arraylist,每个对象都包含这些对象所做的数组选择。arraylist.get(i).returnProfile()用于单独返回对象所做的选择。Appliantarray是对象的arraylist,每个对象都包含这些对象所做的数组选择。arraylist.get(i)。returnProfile()用于单独返回对象所做的选择。
String receiveAdminResponse() {
String hold = null;
if (UniResponse.size() > 0) {
System.out.println("\n inside Student class = pringint decision array");
for (int count = 0;count < UniResponse.size(); count++) {
System.out.println(UniResponse.get(count));
/* If you use '=' you are setting the variable to the last value
of UniResponse.get(count) */
hold += UniResponse.get(count) + ", "; // ',' or '\n" the separator you want
}
}
return hold;
}
String returnProfile() {
String studentInfo =FAMILYNAME+", " + "average = " + AVERAGE + " \n";
String uniPicksString ="";
if (ApplicantArray.size() < CHOICES.size()) {
System.out.println("ApplicantArray size is lower than CHOICES (" + ApplicantArray.size() + ", " + CHOICES.size + ").");
}
else if (ApplicantArray.size() == CHOICES.size()) {
for (int i = 0; i < CHOICES.size(); i++) {
if(i < CHOICES.size() - 1) {
uniPicksString += uniPicksString + CHOICES.get(i) + ": " + ApplicantArray.get(i).receiveAdminResponse() + ", " ;
}else {
uniPicksString += uniPicksString + CHOICES.get(i) + ": " + ApplicantArray.get(i).receiveAdminResponse() + "\n" ;
}
}
}
else System.out.println("ApplicantArray size is bigger than CHOICES (" + ApplicantArray.size() + ", " + CHOICES.size + ").");
return studentInfo + uniPicksString + "\n";
}