Java.lang.String无法转换为int

时间:2016-01-09 19:29:44

标签: java bluej

在我将罗马数字变成阿拉伯数字的程序中,我遇到了错误

  

不兼容的类型:java.lang.String无法转换为int

这是我的代码

if ( Character.isDigit(TextIO.peek()) ) {
    int arabic = TextIO.getlnInt();
    try {
        RomanNumerals N = new RomanNumerals(arabic);
        TextIO.putln(N.toInt() + " = " + N.toString());
    }
    catch (NumberFormatException e) {
        System.out.println("Invalid input.");
        System.out.println(e.getMessage());
    }
}
else {
    String roman = TextIO.getln();
    try {
        RomanNumerals N = new RomanNumerals(roman);
        System.out.println(N.toString() + " = " + N.toInt());
    }
    catch (NumberFormatException e) {
        System.out.println("Invalid input.");
        System.out.println(e.getMessage());
    }
}

我正在使用BlueJ并且错误被突出显示在"(罗马)"

2 个答案:

答案 0 :(得分:0)

在这里猜猜......但是你的类RomanNumerals可能没有把字符串作为参数的构造函数,如

public RomanNumerals(String r) {

这就是为什么这样称呼它:

RomanNumerals N = new RomanNumerals(roman);

不允许。

答案 1 :(得分:0)

我正在查看TextIO.putln(N.toInt() + " = " + N.toString());并想象N.toInt()会返回int,当您尝试向其添加" = "时编译器会感到困惑。

试试TextIO.putln(Integer(N.toInt()).toString() + " = " + N.toString());