简体   繁体   中英

How do I add a User Input of type String to an ArrayList in Java?

I am attempting to make a course registration system and one of my classes (Course) is centered around course attributes (ie. Course number, course name, instructors, students). I am making an ArrayList so that the Administrator (one of the user types) may add as many instructors to the course as he/she would like- I have created a Scanner and a String variable and everything, but when I write the .add command, Eclipse highlights ".add" and says "the method .add() is undefined for the type of scanner". Now, I can understand this, but I have no idea how to fix it and I've tried so many ideas.

Here is the method:`

public static String Instructor(){
        String courseInstructors;

        System.out.println("Please add name(s) of course instructors.");
        ArrayList<String> Instructors= new ArrayList<String>();
        Scanner courseInst = new Scanner(System.in);
        courseInstructors = courseInst.next();
        //courseInst.add(courseInstructors); 

        for(String courseInstructors1 : Instructors) {
            courseInstructors1 = courseInstructors;
            courseInst.add(courseInstructors1);
        }

        return;
    }`

Please adhere to Java naming conventions ad use lower case for variable names - instructors instead of Instructors .

Also, you want to add to your arraylist, so call add() on

instructors.add(courseInstructors1)

You may also want to consider choosing better variable naming than courseInstructors1 , for instance just courseInstructor , since you are referring to on instructor of all instructors .

Also in your for loop you are doing the following

for(String courseInstructors1 : Instructors) {
    courseInstructors1 = courseInstructors;
    courseInst.add(courseInstructors1);
}

This can be simplified to

for(String courseInstructors1 : Instructors) {
    courseInst.add(courseInstructors);
}

And if you look at the simplification you will see that iterating through Instructors make no sense here, since you are not using the contents of courseInstructors1.

I'm trying to understand what your loop is for.

if you are trying to get multiple instructor names from one input then you need something like this.

//get input
//"John Peggy Adam blah blah"
courseInstructors = courseInst.next();

//split the string by white space
String[] instArr = courseInstructors.split(" ");
//will give array of John, Peggy, Adam, blah, blah

Then do your foreach loop to add them to the list.

for(String inst: instArr){
    instructors.add(inst);
}

Otherwise I would suggest doing something like this so you don't have to worry about splitting names and such.

courseInstructor = courseInst.nextLine();

while(!courseInstructor.equals("done"){
    //add name to list of instructors.
    instructors.add(courseInstructor);
    //get next name.
    courseInstructor = courseInt.nextLin();
    //if the user types done, it will break the loop.
    //otherwise come back around and add it and get next input.
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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