Java.lang.String 无法转换为 int

Java.lang.String cannot be converted to int

在我将罗马数字转换为阿拉伯数字的程序中,我遇到了 运行 错误

incompatible types: java.lang.String cannot be converted into 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,错误在“(罗马)”上方突出显示

在这里猜测......但可能你的 class RomanNumerals 没有像

这样的将字符串作为参数的构造函数
public RomanNumerals(String r) {

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

RomanNumerals N = new RomanNumerals(roman);

不允许。

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

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