使用scanner类输入数组(错误:不兼容类型:扫描程序无法转换为String)

use*_*539 4 java arrays java.util.scanner

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

error: incompatible types: Scanner cannot be converted to String
Run Code Online (Sandbox Code Playgroud)

我有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);
Run Code Online (Sandbox Code Playgroud)

我的代码如下

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();
Run Code Online (Sandbox Code Playgroud)

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;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Rob*_*sen 5

问题是您将Scanner对象传递给addStudent方法而不是从扫描仪获取的字符串:

app.addStudent(name, DOB, address, gender);
Run Code Online (Sandbox Code Playgroud)

应该

app.addStudent(Name, DOB, Address, Gender);
Run Code Online (Sandbox Code Playgroud)

也:

  • 一个Scanner对象就足够了.不需要四个.
  • Java代码约定规定变量名称在较低的camel-case中,即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....");
Run Code Online (Sandbox Code Playgroud)