运算符<不能应用于java

时间:2013-05-22 16:53:00

标签: java

如下所示,我在mac终端上输入了 javac App.java ,我看到运营商五个错误,都是一样的。我不知道如何修复它如下所示,我感谢你的指点?

我导入了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&lt;不能应用于java.lang.String,int         if(theNumber&lt; 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 个答案:

答案 0 :(得分:6)

你之所以将“theNumber”存储为String,然后尝试对其进行整数比较。它不是整数,因此发生错误。

相反,以下方法可行:

int theNumber;

theNumber = someInput.nextInt();

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

或者,你可以继续使用字符串,只需在Integer.parseInt()语句中用if/else包装它,但是如果将代码存储为int似乎更具建设性。< / p>

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

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

答案 1 :(得分:1)

此错误消息非常明确。

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

这就是说Java运营商&#39;&#39; (小于),不能应用于(用于比较)String和int。

所以你想问,是&#34; 400&#34; &LT; 20,你不能用Java做的。您需要先将字符串theNumber转换为int。如果你搜索它,你会在这里和互联网上找到很多。

答案 2 :(得分:1)

将字符串转换为整数

int a = Integer.parseInt(theNumber);

Java中的基本规则是条件必须求值为boolean,这意味着if(整数)是错误的

答案 3 :(得分:1)

<运算符不能用于String值。 theNumber正在使用String值。将theNumber解析为int,然后应用<运算符。

int parseTheNumber = Integer.parseInt(theNumber);

检查api docs