2017-05-05 115 views
2

我很新,编码和尝试多种解决方案后,我来了与此同时,我仍然无法弄清楚为什么我所做的是错误的。这是我的全码:BlueJ错误:“不兼容的类型:int无法转换java.lang.String”和“不兼容的类型:java.lang.String不能转换为int”

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数来填充使用方法的地方。

+0

'number'是一个'int'不是'String',将你的方法签名改为'public int getNumber()'和'public void setNumber(int number)'。 – Berger

+0

并提示:您使用“,”来分隔(方法的参数),而不是“;” ...我在你的输入问题中自由地解决了这个小问题。 – GhostCat

+0

没问题 - 您的答案都帮助我了,谢谢帮助我。 – Ann

回答

0

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

但也有不同的辅助方法来解决这个问题,这样的:

String asString = Integer.toString(123); 

果然intString;和

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

其他方式。

而仅仅是为了记录:你可以写

Integer integerObject = 5; 

被称为auto-boxing的事实。

相关问题