如何将扫描仪输入转换为整数?

时间:2017-02-22 15:06:58

标签: java int java.util.scanner

在Java中,如果可能的话,我如何将数字扫描仪输入(如2或87)转换为整数变量?我现在使用的是产生错误消息:

    Exception in thread "main" java.lang.NumberFormatException: null
    at java.lang.Integer.parseInt(Unknown Source)
    at java.lang.Integer.valueOf(Unknown Source)
    at diDecryption.Didecryption.main(Didecryption.java:226)

这是我用来做的代码(拼凑在一起,它是一个更大的程序的一部分):

    System.out.println("Enter first number");
    Scanner sc=new Scanner(System.in); 
    String name=sc.next();
    int result = Integer.valueOf(name);
    if (result / 2 == 1){
    System.out.println("a");

该程序的目的是解码加密的消息。输入是数字,如果我将字符串删除到int转换器,该除法不起作用。我该如何解决这个问题?

5 个答案:

答案 0 :(得分:0)

System.out.println("Enter first number");
Scanner sc=new Scanner(System.in); 
String name=sc.next();
int result = Integer.parseInt(name);
if (result / 2 == 1){
System.out.println("a");

parseint将其更改为原始int而不是Integer对象

答案 1 :(得分:0)

如果您的输入是数字,最好直接使用方法

sc.nextInt();

答案 2 :(得分:0)

在您的堆栈跟踪中,null中的参数为Integer.valueOf(name)。 似乎您的控制台产生一些无效的输入序列。 尝试使用sc.hasNext()条件进行检查:

    System.out.println("Enter first number");
    Scanner sc = new Scanner(System.in);
    if (sc.hasNext()) {
        String name = sc.next();
        int result = Integer.parseInt(name);
        if (result / 2 == 1) {
            System.out.println("a");
        }
    }

答案 3 :(得分:0)

尝试

System.out.println("Enter first number");
Scanner sc=new Scanner(System.in); 
int name=sc.nextInt();
if ((name / 2) == 1)
System.out.println("a"); 

生成

run:
Enter first number
2
a

答案 4 :(得分:0)

试试此代码

package exmaple;

import java.util.Scanner;

public class Parser {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        String name = in.next();

        try{
            int result = Integer.parseInt(name);
            if(result / 2 == 1) {
                System.out.println("a");
            }

        } catch(Exception exception) {

        }
        in.close();
    }

}