我在尝试运行程序时遇到问题。我的程序应该做的是接收一个数字并将其与int进行比较。我知道该程序认为我正在尝试将String与int进行比较而对此并不满意。我该怎么办?
import java.util.Scanner;
public class C {
public static void main(String args[]) {
Scanner input = new Scanner (System.in);
String age = input.nextLine();
if (age < 50){
System.out.println("You are young");
}else{
System.out.println("You are old");
}
}
}
答案 0 :(得分:6)
您无法使用数字比较运算符将String
与int
进行比较。 Java语言规范的§15.20.1准确描述了您所看到的内容:
数值比较运算符的每个操作数的类型必须是可转换(§5.1.8)到基本数字类型的类型,或者发生编译时错误。
由于String
不能转换为原始数字类型,因此无法将其与整数进行比较。因此,您有两种选择:
您可以使用String
将int
转换为Integer#parseInt
:
int age = Integer.parseInt(ageString);
但在您的情况下,由于您已经在阅读输入,最好绕过整个parseInt
位并直接读入int
:
int age = input.nextInt();
请记住,您仍然需要处理无效输入的可能性。
答案 1 :(得分:3)
您需要void deletefolder(){
struct dirent *next_file;
DIR *folder;
char filepath[256];
folder = opendir("./game/wow");
while((next_file = readdir(folder)) != NULL){ //this is causing the segmentation fault. i dont know why??
sprintf(filepath, "%s/%s", "./game/wow", next_file->d_name);
remove(filepath);
}
}
为整数才能将其与50进行比较。
您有两种选择:
age
或
int age = input.nextInt();
请注意,如果您输入的输入不是整数,则两个选项都会抛出异常。
答案 2 :(得分:1)
在比较之前,您需要使用parseInt()将其转换为整数。
答案 3 :(得分:0)
您需要将String解析为整数。
String age = input.nextLine();
if (Integer.parseInt(age) < 50) {
System.out.println("You are young");
}
答案 4 :(得分:0)
scanner类实际上有一个名为nextInt()的输入法,你可以使用它:
Scanner input = new Scanner(System.in);
int age = input.nextInt();
// Comparisons
答案 5 :(得分:0)
使用“&lt;”,“&gt;”,“&lt; =”,“&gt; =”运算符无法比较字符串和int值。这是你的代码的问题。解决你也可以,
将第5行替换为int age = input.nextInt();
,将用户输入作为int
或者您可以使用类似int intage=Integer.parseInt(age);
之类的内容从用户获取输入后将年龄字符串转换为整数。然后你可以用intage变量替换你的年龄变量