3

如下所示,我在 mac Terminal 上输入了javac App.java,我看到operator五个错误,都是一样的。我不知道如何解决它,我很感激你的指点?

我已经导入 javabook.*;这是 Textpad 上的 JAVA 代码。

import javabook.*;              
//import java.util.Scanner;         

class App
{
    public static void main(String args[])
    {


        //declare variable
        String theNumber;

        //declare object
        Scanner someInput;

        //input
        System.out.println("Please enter area size : ");
        someInput = new Scanner(System.in);
        theNumber = someInput.nextLine();

        //processing

        if ( theNumber < 20 )
        {
            System.out.println( "It is too small." ) ;
        }
        else if ( theNumber > 20 && theNumber < 40 )
        {
            System.out.println( "It is perfect size." ) ;
        }

        else if ( theNumber > 40 && theNumber < 60 )
        {
            System.out.println( "It is too big." ) ;
        }

        //close the program without error
        System.exit(0);
    }
}

终端响应为App.java:28: operator < cannot be applied to java.lang.String,int if ( theNumber < 20 )

我会很感激你的帮助?

更新:

import javabook.*;              //Same result Scanner or javabook. Tried both and it worked.
import java.util.Scanner;       //this is required

class App
{
    public static void main(String args[])
    {


        //declare variable
        //String theNumber;
        //int theNumber = Integer.parseInt(someInput.nextLine());

        int theNumber; //need to convert your string theNumber to an int first. If you search for that, you'll find lots, both here and on the internet generally.
        int a = Integer.parseInt(theNumber);
        //theNumber = someInput.nextInt(); //this is commented out so now down to two errors

        //declare object
        Scanner someInput;

        //input
        System.out.println("Please enter area size : ");
        someInput = new Scanner(System.in);
        theNumber = someInput.nextLine();

        //processing

        if ( theNumber < 20 )
        {
            System.out.println( "It is too small." ) ;
        }
        else if ( theNumber > 20 && theNumber < 40 )
        {
            System.out.println( "It is perfect size." ) ;
        }

        else if ( theNumber > 40 && theNumber < 60 )
        {
            System.out.println( "It is too big." ) ;
        }

        //close the program without error
        System.exit(0);
    }
}
4

4 回答 4

8

您将“theNumber”存储为字符串然后尝试对其使用积分比较的原因。它不是整数,因此会发生错误。

相反,以下将起作用:

int theNumber;

theNumber = someInput.nextInt();

现在,您将 theNumber 存储为整数,并且您正在使用扫描仪读取下一个整数并将其存储在 theNumber 中。

或者,您可以继续使用 String 并将其简单地包装Integer.parseInt()在您的if/else语句中,但考虑到您的代码将其存储为 anint似乎更具建设性。

请注意,现在代码正在检查用户输入是否为整数。如果不是,则会抛出错误。

编辑 - 请注意,必须导入 Scanner 类(如 OP 提供的代码中当前已注释掉。

于 2013-05-22T16:54:42.350 回答
1

<运算符不能用于字符串值。theNumber正在取字符串值。解析theNumber为 int,然后应用<运算符。

int parseTheNumber = Integer.parseInt(theNumber);

检查 api文档

于 2013-05-22T17:14:12.290 回答
1

对此的错误消息非常具有解释性。

operator < cannot be applied to java.lang.String,int

这就是说 Java 运算符“<”(小于)不能应用于(用于比较)String 和 int。

所以你想问的是“400”< 20,这是你在 Java 中做不到的。您需要theNumber先将字符串转换为 int。如果你搜索它,你会发现很多,无论是在这里还是在互联网上。

于 2013-05-22T16:57:21.730 回答
1

将字符串转换为整数

int a = Integer.parseInt(theNumber);

Java 中的基本规则是条件必须评估为布尔值,这意味着 if(integer) 是错误的

于 2013-05-22T17:03:27.643 回答