繁体   English   中英

使用设置器将值添加到 arraylist

[英]Adding values to an arraylist with setters

Arraylist 未采用正确的用户输入。 我希望数组存储学生的姓名,然后是 id,所以 output 应该是 [boris,22]。 但这是我收到的 output

输入学生姓名 boris

[鲍里斯]

输入 ID 22

[鲍里斯,鲍里斯]

我知道我可以为用户输入分配一个变量并将其添加到 ArrayList,但我想使用 setter 来执行此操作。

import java.util.ArrayList;
import java.util.Scanner;
import java.util.List;

public class studentTest {

    public static void main(String[] args) {

        ArrayList<Student> storage = new ArrayList<Student>(); 
        Scanner input = new Scanner(System.in);

        Student obj3 = new Student();

        System.out.print("Enter Student name ");

        obj3.setName(input.nextLine());
        storage.add(obj3);
        System.out.print(storage);
        System.out.print("Enter ID ");
        obj3.setID(input.nextInt());
        storage.add(obj3);

        System.out.print(storage);
    }
}

public class Student {

    private  String  name;
    private int ID;
    private double grade;
    private int test;
    private int NUM_Tests;

    public Student() {
        name = "unassigned";
        ID = 0;
        grade = 0;
        test = 0;
        NUM_Tests = 0;
    }

    public  void setName(String N) { 
        name = N;   
    }
    public String getName() {
        return name;
    }
    public void setID(int I) {
        ID = I;
    }
    public int getID() {
        return ID;
    }

    public String toString() { 
        return String.format(name,ID);
    }
}

你的代码是这样的:

import java.util.ArrayList;
import java.util.Scanner;
import java.util.List;

public class studentTest {

    public static void main(String[] args) {

        List<Student> storage = new ArrayList<>(); 
        Scanner input = new Scanner(System.in);

        Student student;

        System.out.println("Create student. Type 0 to exit!");

        while(input.nextLine() != "0") {

            student = new Student();

            System.out.print("Enter the name: ");
            student.setName(input.nextLine());

            System.out.print("Enter ID: ");
            student.setID(input.nextInt());

            storage.add(student);
        }

        for (Student s: storage) {
            System.out.print( s.toString() );
        }
    }
}

public class Student {

    private String name;
    private int ID;
    private double grade;
    private int test;
    private int NUM_Tests;

    //Constructor
    public Student() {

        name = "unassigned";
        ID = 0;
        grade = 0;
        test = 0;
        NUM_Tests = 0;
    }

    //Getter and Setter
    //.....
    //.....

    public String toString() {
        String s = "Student info ----\n" + 
            "Name: " + this.name + "\n" + 
                "ID: " + this.ID + "\n" +
                    "---------------\n";
        return s;
    }
}

使用此代码,您可以在List中插入多个学生。 如果要停止创建用户,请键入0 之后,所有学生都将以时尚的风格展示。

在学生 class 中更改为字符串: return String.format(name,ID); 应该是return String.format("%s %d", name, ID);

  • 由艾略特提供

并删除导致重复的第一个storage.add(obj3)

  • 由气垫船和 Azro 提供

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM