BlueJ错误:"不兼容的类型:int无法转换为java.lang.String" AND"不兼容的类型:java.lang.String无法转换为int"

时间:2017-05-05 09:23:56

标签: java bluej

我对编码非常陌生,在尝试了多种解决方案后,我想出了,我仍然无法弄清楚为什么我所做的是错误的。这是我的完整代码:

public class Student {
  private String name;
  private String grade;
  private String gender;
  private int number;

  public Student( String name,  String grade, String gender, int number ) {
    this.name = name;
    this.grade = grade;
    this.gender = gender;
    this.number = number;
  }

  public String getName() {
    return name;
  }

  public void setName( String name ) {
    this.name = name;
  }

  public String getGrade() {
   return grade;
  }

  public void setGrade( String grade ) {
    this.grade = grade;
  }

  public String getGender() {
    return gender;
  }

  public void setGender( String gender ) {
    this.gender = gender;
  }

  public String getNumber() {
    return number;
  }

  public void setNumber( String number ) {
    this.number = number;
  }
}

正如您可能看到的那样,我在尝试不仅能够在第一次使用对象时添加新名称/等级/性别/ int编号,而且还尝试使用方法。

我遇到的问题似乎是由这部分造成的:

public String getNumber() {
  return number;
}

public void setNumber( String number ) {
  this.number = number;
}

当我将鼠标悬停在"数字"在第二行中,BlueJ给出以下错误:"不兼容的类型:int无法转换为java.lang.String"

虽然当我将鼠标悬停在"数字"在第五行中,BlueJ给出了错误:"不兼容的类型:java.lang.String无法转换为int"

我已经尝试在这个网站上搜索类似的问题,但是没有找到任何他们试图通过使用方法来填充int号的地方。

1 个答案:

答案 0 :(得分:1)

String和int是两个不同的类型,与Integer和int相反,没有编译器魔术可以自动将其转换为另一个。

但是有各种各样的辅助方法可以解决这个问题,例如:

String asString = Integer.toString(123);

int变为String;和

int number = Integer.parseInt("123"); 

反过来。

只是为了记录:你可以写

的事实
Integer integerObject = 5;

被称为auto-boxing