【问题标题】:Inputting into an array using scanner class (error: incompatible types: Scanner cannot be converted to String)使用扫描器类输入数组(错误:不兼容的类型:扫描器无法转换为字符串)
【发布时间】:2015-04-20 02:12:05
【问题描述】:

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

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;
        }
    }
}

【问题讨论】:

标签: java arrays java.util.scanner


【解决方案1】:

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

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

应该是

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

还有:

  • 一个Scanner 对象就足够了。不需要四个。
  • 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....");

【讨论】:

    【解决方案2】:

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

    在您的代码中,您将Name(字符串)与name(扫描仪)混淆了。

    这就是命名规则的原因。

    试试改成

     Scanner input = new Scanner (System.in);
    
     String name = input.nextLine ();
     String gender = input.nextLine (); 
     ...
    

    然后

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

    也尝试阅读naming conventions

    【讨论】:

      【解决方案3】:

      姓名、地址和性别是扫描仪,你的方法需要字符串

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

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

      【讨论】:

        猜你喜欢
        • 2015-08-24
        • 2017-06-22
        • 1970-01-01
        • 2019-03-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-18
        • 2015-01-06
        相关资源
        最近更新 更多