2017-02-22 79 views
0

在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转换器,分区不起作用。我该如何解决?

+0

你如果我给它一个数字,代码对我来说工作正常。你到底在做什么? (你发布的错误信息表明你正试图解析'null') – azurefrog

+0

你的输入是什么?代码对我来说看起来很好。 http://ideone.com/omNdEF –

+2

我怀疑你的异常消息是否与你的代码匹配。扫描仪方法不会返回null。如果没有什么可读的话,他们会抛出异常。请提供[mcve]。 – Tom

回答

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对象

+3

这不会有什么区别,Java很乐意取消'valueOf()'返回的'Integer'。 – azurefrog

+0

@azurefrog true,但他们的代码似乎为我工作 –

0

如果你输入的数值,它是更好地使用直接的方法

sc.nextInt(); 
+0

这显然不是转换。但我确实明白你的想法 –

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"); 
     } 
    } 
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

run: 
Enter first number 
2 
a 
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(); 
    } 

}