使用Scanner.nextLine()时出错:类型不匹配:无法从String转换为int

时间:2012-03-27 18:29:40

标签: java java.util.scanner

在这里做一些功课(第二次任务,仍然非常绿......)。对象是读取数字xy并提供数百个位置的数字。

为此,我需要使用int我假设,因为要求是利用返回值的方法。

我刚刚开始对此进行编码,但是我已经遇到了编译错误:

  

线程“main”中的异常java.lang.Error:未解析的编译   问题:       参数anum的非法修饰符;只有决赛是允许的       参数bnum的非法修饰符;只有决赛是允许的       类型不匹配:无法在Hundreds.main(Hundreds.java:6)从String转换为int

我哪里错了?

以下是目前的代码:

 import java.util.Scanner; 
 public class Hundreds {
 public static void main (String [] args) {

        Scanner input = new Scanner(System.in);
        private int anum,bnum;
        System.out.println("Hello, for this assignment we are going to require the user to enter two distinct numbers of their choosing");
        System.out.println("Please ensure the numbers are between 100 and 9999");
        System.out.println("\n");
        System.out.println("Please enter your first Number: ");
        anum = input.nextLine();

6 个答案:

答案 0 :(得分:2)

由于这些变量是本地变量,因此您无法将可见范围设置为私有,公共,受保护。

如果您希望它们的范围更大,请将它们移出主函数。

答案 1 :(得分:2)

anum = Integer.valueOf(input.nextLine());

答案 2 :(得分:1)

您还可以测试下一个元素是否为int,然后如果不是则向用户提供反馈:

if(input.hasNextInt()) {
    anum = input.nextInt();
}

答案 3 :(得分:0)

创建anum字符串而不是int。 nextLine返回一个字符串。在main中定义字符串时不要使用private。

答案 4 :(得分:0)

请改为尝试:

anum = input.nextInt();

如果您输入一个非整数(尝试查看有趣的堆栈跟踪),这仍然会出错,但会让您超越当前的位置。

答案 5 :(得分:0)

(i)删除无效修饰符。     (ii)将字符串转换为整数。因此,请使用anum=input.nextInt()而不是anum = input.nextLine()