Java 使用scanner类输入数组(错误:不兼容类型:无法将scanner转换为字符串)

Java 使用scanner类输入数组(错误:不兼容类型:无法将scanner转换为字符串),java,arrays,java.util.scanner,Java,Arrays,Java.util.scanner,我正在尝试使用扫描仪输入学生详细信息,但我不断收到以下错误: error: incompatible types: Scanner cannot be converted to String 我有4台扫描仪,它们是 static Scanner name = new Scanner(System.in); static Scanner Date = new Scanner(System.in); static Scanner address = new Scanner(System.in);

我正在尝试使用扫描仪输入学生详细信息,但我不断收到以下错误:

error: incompatible types: Scanner cannot be converted to String
我有4台扫描仪,它们是

static Scanner name = new Scanner(System.in);
static Scanner Date = new Scanner(System.in);
static Scanner address = new Scanner(System.in);
static Scanner gender = new Scanner(System.in);
我的代码如下

System.out.println("You have chosen to add a student. Please enter the following details");
System.out.println("Name: ");
String Name = name.nextLine();  
System.out.println("DOB: ");
String DOB = Date.nextLine();
System.out.println("Address: ");
String Address = address.nextLine();
System.out.println("Gender: ");
String Gender = gender.nextLine();

app.addStudent(name, DOB, address, gender);
System.out.println(Name + " has been added!" + "\n" + "Returning to menu....");

app.delay();
addStudent
方法如下

public void addStudent (String name,String DOB,String address,String gender)
{
    for(int i = 0; i < enrolment.length; i++)
    {
        if (enrolment[i] == null)
        {
            this.enrolment[size] = new Student(name, DOB, address, gender);
            this.size++;

            if (gender == "Male")
            { 
                this.maleStudents++;
            }
            else { 
                this.femaleStudents++; 
            }
            break;
        }
    }
}
public void addStudent(字符串名称、字符串DOB、字符串地址、字符串性别)
{
for(int i=0;i<0.length;i++)
{
if(注册[i]==null)
{
此。入学人数[人数]=新生(姓名、出生日期、地址、性别);
这个.size++;
如果(性别=“男性”)
{ 
这个.malesudents++;
}
否则{
这个。女学生++;
}
打破
}
}
}

您只需要一个扫描仪,而不是每个输入都需要一个

在您的代码中,您将
名称
(字符串)与
名称
(扫描仪)混淆

这就是为什么有命名规则

试着换成

 Scanner input = new Scanner (System.in);

 String name = input.nextLine ();
 String gender = input.nextLine (); 
 ...
然后


还可以尝试阅读有关的内容。问题是,您将
扫描仪
对象传递给
addStudent
方法,而不是从扫描仪获取的字符串:

app.addStudent(name, DOB, address, gender);
应该是

app.addStudent(Name, DOB, Address, Gender);
此外:

  • 一个
    扫描仪
    对象就足够了。不需要四个
  • Java代码惯例规定变量名采用小写,即
    gender
    而不是
    gender

将所有内容放在一起,您的代码应该如下所示:

Scanner scanner = new Scanner(System.in);

System.out.println("You have chosen to add a student. Please enter the following details");

System.out.println("Name: ");
String name = scanner.nextLine();

System.out.println("DOB: ");
String dob = scanner.nextLine();

System.out.println("Address: ");
String address = scanner.nextLine();

System.out.println("Gender: ");
String gender = scanner.nextLine();

app.addStudent(name, dob, address, gender);

System.out.println(name + " has been added!" + "\n" + "Returning to menu....");

名称、地址和性别是扫描器,您的方法采用字符串

app.addStudent(Name, DOB, Address, Gender);

是使用您定义的字符串变量的方法

您只需要一个扫描仪。您应该首先在扫描仪上读取:
app.addStudent(Name, DOB, Address, Gender);