简体   繁体   English

字符串ArrayList返回空值

[英]String ArrayList returning null values

I'm new to java and doing some arraylist work, and when compiling my lists just return null values instead of names i have typed in. 我是java的新手,正在做一些arraylist工作,并且在编译列表时仅返回空值而不是我输入的名称。

I don't undersand why this is so, so if anyone could advise/help me that would be great. 我不明白为什么会这样,所以如果有人可以提供建议/帮助我,那将很棒。

Thanks in advanced. 提前致谢。

Here is my main code 这是我的主要代码

import java.util.*;

public class StudentData 
{
    public static void main(String[] args) 
    {
        Scanner in = new Scanner(System.in);
        ArrayList<Student> studentList = new ArrayList<Student>();
        String yesNo = "true";
        do
        {
            System.out.println("Enter student's name: ");
            String name = in.next();
            Student s = new Student();   
            studentList.add(s);
            String input;
            do
            {   
                System.out.println("Would you like to enter data for another student? Yes/No ");
                yesNo = in.next();
                }
            while (!yesNo.equalsIgnoreCase("YES") && !yesNo.equalsIgnoreCase("NO"));
            }   
        while (yesNo.equalsIgnoreCase("YES"));


        for(int i = 0; i < studentList.size(); i++)
        {
            System.out.println(studentList.get(i).getName());
            }
        }
    }

And

class Student 
{
    private String studentName;

    public StudentData(String name)
    {
        setName(name);
    }
    public String getName()
    {
        return studentName;
        }
    public void setName(String name)
    {
        studentName = name;
        }
    }

You're creating a student but didn't set the name : 您正在创建一个学生,但未设置名称:

            String name = in.next();
            Student s = new Student();   
            studentList.add(s);

Try with : 尝试:

        String name = in.next();
        Student s = new Student();   
        s.setName(name);
        studentList.add(s);

Also replace your constructor. 同时替换您的构造函数。 Ie : 即:

public StudentData(String name){
        setName(name);
}

should be 应该

public Student(String name) {
        setName(name);
}

Then you will be able to do Student s = new Student(name); 然后,您将可以执行Student s = new Student(name);

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

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