从控制台接受数据并将其以字符串形式存储到不同数据类型的变量中

时间:2015-07-13 13:24:24

标签: java error-handling console

package yo;
import java.util.Scanner;
public class ko {
    public static void main(String args[]) {
        int num;
        Scanner bucky = new Scanner(System. in ); //accepting data
        System.out.println("enter a number");
        System.out.println("you entered " + bucky.nextLine()); //printing data
        num = Integer.parseInt(bucky.nextLine());
        System.out.println(num);
        bucky.close();
    }
} 

输出:

 Exception in thread "main" java.lang.NumberFormatException: For input string: ""
    at java.lang.NumberFormatException.forInputString(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at yo.ko.main(ko.java:13)

lease帮助我找到解决方案。

我希望输入数据存储为整数,以便在程序中进一步使用。

4 个答案:

答案 0 :(得分:1)

当您拨打nextInt()时,如果您第二次拨打电话,它将会错过输入。首先将其存储在num中,然后使用num变量进行打印。也可以使用nextInt()代替nextLine()

您可以按照以下方式进行更改:

Scanner bucky = new Scanner(System. in ); //accepting data
System.out.println("enter a number");
num = bucky.nextInt();
System.out.println("you entered " + num); //printing data

祝你好运。

答案 1 :(得分:0)

如果您删除System.out.println("you entered " + bucky.nextLine());,并且两次调用bucky.nextLine(),那么这将是您想要的,因此您必须输入两次参数。

答案 2 :(得分:0)

这里的问题是你拨打bucky.nextLine()两次,首先是打印时,然后当你尝试进行转换时,你需要知道每次写bucky.nextLine()计算机都在等待对于输入。解决方案?,首先将其存储在一个变量中,如 STaefi 表示。

顺便说一下,如果你想把输入存储为整数数据,而不是nextLine()方法,试试nextInt()这是一个专注于整数的方法。

我希望你理解,抱歉我的英语。

答案 3 :(得分:0)

试试这个,我想这就是你要求的......快乐编码=]

    while(!bucky.hasNextInt()) {
        bucky.next();
        System.out.println("please enter an Integer");
    }

    int num = bucky.nextInt();
    System.out.println("you entered " + num); //printing data
    System.out.println(num);
    bucky.close();