如下所示,我在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);
}
}
答案 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