Java 为什么从arraylist打印时会得到一个超出边界的数组?

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

我似乎无法理解为什么我试图打印的数组在我尝试将其附加到JTextArea时抛出一个数组越界错误

两个数组都已初始化为从零开始

          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;countwhile(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";
}