当前位置: 首页 > 知识库问答 >
问题:

如何添加到Arraylist并用Java显示?

蔡鹏程
2023-03-14
public class Student {

Scanner scan = new Scanner(System.in);
String name_s, surname_s;
int age_s, number_s;
int choice;
int index;

public void Studentt() {
    
    ArrayList<String> name = new ArrayList<String>();
    ArrayList<String> surname = new ArrayList<String>();
    ArrayList<Integer> age = new ArrayList<Integer>();
    ArrayList<Integer> number = new ArrayList<Integer>();

    System.out.println("To add student:1\nTo see student:2");
    this.choice = Integer.parseInt(scan.nextLine());

    if (choice == 1) {
        System.out.println("Name:");
        this.name_s = scan.nextLine();
        name.add(name_s);
        System.out.println("Surname:");
        this.surname_s = scan.nextLine();
        surname.add(surname_s);
        System.out.println("Age:");
        this.age_s = Integer.parseInt(scan.nextLine());
        age.add(age_s);
        System.out.println("Number");
        this.number_s = Integer.parseInt(scan.nextLine());
        number.add(number_s);
        end();
    } else if (choice == 2) {

        System.out.println("Index of the student you want to see:");
        this.index = Integer.parseInt(scan.nextLine());
        System.out.println(name.get(index));
        System.out.println(surname.get(index));
        System.out.println(age.get(index));
        System.out.println(number.get(index));
        System.out.println("Done.");
        end();
    } else {
        System.out.println("Wrong choice.");
        Studentt();

    }

}

public void end() {
    try(Scanner scan = new Scanner(System.in)){
        int menu;
        System.out.println("To repeat:1 \nExit:2");
        menu = Integer.parseInt(scan.nextLine());
        if (menu == 1) {
            Studentt();
        } else if (menu == 2) {
            System.out.println("Done.");
        } else {
            System.out.println("Wrong choice.");
            end();
        }
    }

}

这是输出:

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index 1 out of bounds for length 0

共有1个答案

逑禄
2023-03-14

您的问题是,如果choice==2,则希望从列表中读取特定索引。在你只做'.get'之前,你应该检查一下列表是否足够大。

如果列表的大小为1,则表示列表中只有一个元素,因此索引0处只有一个元素(所有索引都以0开头)。

另外,我认为在方法中重新初始化列表是一个错误。初始化列表时,将再次创建所有列表,从而清空所有列表。您可以通过全局创建和初始化列表(全局表示类中和每个方法之外的意思)来解决这个问题。

 类似资料:
  • 我在这里试图实现的是,当用户选择ComboBox中的数据时,它会将其与我的HashMap匹配,并将其添加到ArrayList中。 代码有效。输出为: (用户从组合框中选择了 LOTR 1) 但是当我再次单击该按钮时,ArrayList会重置。我想要的是让ArrayList继续添加数据而不替换初始数据,即使它是重复的。例如: 基本上,用户可以从ComboBox中选择无数次,ArrayList不断添加

  • 问题内容: 问题发生在 包含该行的代码位于 所有这一切都在里面,这里是一个 当我触摸时,它可能会激活,这将创建另一个具有不同属性的属性,这些属性会从屏幕上掉下来并在不到一秒钟的时间内销毁自己。这是我创建粒子效果的方式。我们可以将其称为“粒子” ,就像构造函数中的参数一样。 一切正常,直到我添加另一个main为止。现在,我同时在屏幕上有两个,如果我触摸最新的,它可以正常工作并启动粒子。 但是,如果我

  • 问题内容: 我想向中添加一个对象,但是每次我向具有3个属性的新对象添加时,都会出现错误。 在这里,我正在尝试创建其对象并将其传递给的类。 问题答案: 创建对象时需要使用运算符 要不然 并且您的构造函数不应包含。否则它将成为您班上的一个方法。

  • 我想生成客户对象并将它们存储在ArrayList中,但我不能。 这是我的客户类 CustomerThread类生成客户对象10次,两个客户之间间隔100毫秒 generateProcessTime的方法是生成随机整数,没有问题。这是我的测试课 当我执行这些时,会发生此错误, 线程“Thread-0”中的异常 java.lang.IndexOutOfBounds异常:索引:1,大小:1

  • 这里有两个类,查询语句和Stackov。arraylist用于存储查询语句类的对象。但是最近添加的对象覆盖了前一个对象。如何添加对象以使它们不被覆盖? QuerySentence.java Stackov.java

  • 我有一个小程序,在2D数组中保存状态对和它们的首都。在此程序下面: 我需要用替换常规的二维数组。 我在stackoverflow上找到了一些线程,如何添加我想要的数组。以下是链接:如何在Java中创建二维ArrayList?以及如何声明2D字符串ArrayList?。但是这些讨论并没有解释如何在每个ArrayList中添加元素。我能做的最好的事情是创建新的ArrayList,然后添加一些元素,最后