【问题标题】:How do I convert scanner input into an integer?如何将扫描仪输入转换为整数?
【发布时间】:2026-01-27 10:25:01
【问题描述】:

在 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 转换器,则除法不起作用。我该如何解决这个问题?

【问题讨论】:

  • 如果我给它一个数字,你的代码对我来说很好。确切地说,您在系统输入中提供了什么? (您发布的错误消息表明您正在尝试解析null
  • 您的意见是什么?代码对我来说看起来不错。 ideone.com/omNdEF
  • 我怀疑您的异常消息是否与您的代码匹配。扫描仪方法不返回 null。如果没有可读取的内容,它们将抛出异常。请提供minimal reproducible example
  • 给出的步骤不会重现引用的问题。

标签: java int java.util.scanner


【解决方案1】:

试试这个代码

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

}

【讨论】:

    【解决方案2】:
    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 对象

    【讨论】:

    • 这不会有任何区别,Java 很乐意解开 valueOf() 返回的 Integer
    【解决方案3】:

    在您的堆栈跟踪中,您将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");
            }
        }
    

    【讨论】:

      【解决方案4】:

      试试

      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
      

      【讨论】: