操作员<未定义参数类型String,int

时间:2015-05-29 18:14:41

标签: java

我在尝试运行程序时遇到问题。我的程序应该做的是接收一个数字并将其与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");
        }
    }
}

6 个答案:

答案 0 :(得分:6)

您无法使用数字比较运算符将Stringint进行比较。 Java语言规范的§15.20.1准确描述了您所看到的内容:

  

数值比较运算符的每个操作数的类型必须是可转换(§5.1.8)到基本数字类型的类型,或者发生编译时错误

由于String不能转换为原始数字类型,因此无法将其与整数进行比较。因此,您有两种选择:

  • 您可以使用Stringint转换为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变量替换你的年龄变量