蓝J报错:"不兼容类型:int无法转换为java.lang.String"和"不兼容类型:java.lang.String无法转换为int"。

3

我是一个编程新手,尝试了多种解决方案,但仍然无法弄清楚我的代码错在哪里。以下是我的完整代码:

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

您可能已经看到,我不仅尝试在首次使用对象时添加新的姓名/成绩/性别/整数,而且还通过使用方法来实现。

我遇到的问题似乎是由这部分引起的:

public String getNumber() {
  return number;
}

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

当我悬停在第二行的“number”上时,BlueJ会给出以下错误提示:“不兼容类型:int无法转换为java.lang.String”
然而,当我悬停在第五行的“number”上时,BlueJ给出了错误提示:“不兼容类型:java.lang.String无法转换为int”
我尝试在这个网站上搜索类似的问题,但没有找到任何人尝试使用方法填写int数字的情况。

"number" 是一个整型变量,而不是字符串。请将您的方法签名更改为 "public int getNumber()" 和 "public void setNumber(int number)"。 - Arnaud
1个回答

2

String和int是两种不同的类型,与Integer和int相比,没有编译器魔法自动将一个类型转换为另一个类型。

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

String asString = Integer.toString(123);

int 转换为 String 的方法;以及

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

对于另一种方式。

仅供记录:你能够写作的事实

Integer integerObject = 5;

被称为auto-boxing


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接