【问题标题】:Control of an integer value null控制一个整数值 null
【发布时间】:2021-12-25 15:48:00
【问题描述】:

我在学生课堂上使用扫描仪获得了一些价值:垫子、姓名和姓氏。我想在 mat 的插入是 == "" 而不是代码时完成程序。 例如,当我插入 mat: 8293 时,程序继续运行,但是当我插入 "" 一个空白值时,程序将完成。我认为 mat 值应该转换为 Integer 但不适用于 if 块。

public static void inserimento() {
    Studente s=null;
    do{
        System.out.println("\nmatricola:");
        Scanner mat = new Scanner(System.in);
        int matricola = mat.nextInt();
        Integer i = Integer.valueOf(matricola);
        if(i.equals(null)){
          break;
        }       
      
        System.out.println("\ncognome:");
        Scanner cog = new Scanner(System.in);
        String cognome = cog.next();
      
        System.out.println("\nnome:");
        Scanner nom = new Scanner(System.in);
        String nome = nom.next();
        s = new Studente(matricola,cognome,nome);
    } while(true);
  
    System.out.println("fine inserimento");
}

【问题讨论】:

  • 如果您尝试输入 "" 并将其处理为 int 输入,则该代码应引发输入不匹配异常。它不会给你一个空值,所以你的整个前提可能是错误的。

标签: java class object integer


【解决方案1】:

您可以像字符串一样读取输入并将其解析为整数。这允许您检查输入值是否为空。

 public static void inserimento() {

    Studente s=null;
    do{
        System.out.println("\nmatricola:");
        Scanner mat = new Scanner(System.in);
        
        try {
            String matricola = mat.nextLine();
            if(matricola.equals("")){
                break;
            }   
            Integer i = Integer.valueOf(matricola);
            System.out.println("\ncognome:");
            Scanner cog = new Scanner(System.in);
            String cognome = cog.next();
            System.out.println("\nnome:");
            Scanner nom = new Scanner(System.in);
            String nome = nom.next();
            s = new Studente(matricola,cognome,nome);
        }
        catch(Exception e) {
            System.out.println("the input value must be an Integer");
        }
       
    } while(true);
    System.out.println("fine inserimento");
}

【讨论】:

    【解决方案2】:
    public static void inserimento() {
    Studente s=null;
    do{
        System.out.println("\nmatricola:");
        Scanner mat = new Scanner(System.in);
        String matricolaString = mat.nextLine();
        if(!matricolaString.equals(""))
        {
            int i  = Integer.parseInt(matricolaString);
        }
        else{
            break;
        }
    
        System.out.println("\ncognome:");
        Scanner cog = new Scanner(System.in);
        String cognome = cog.next();
      
        System.out.println("\nnome:");
        Scanner nom = new Scanner(System.in);
        String nome = nom.next();
        s = new Studente(matricola,cognome,nome);
    } while(true);
    
    System.out.println("fine inserimento");
    

    }

    【讨论】:

    • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 2011-04-07
    • 2015-04-22
    • 1970-01-01
    • 2014-10-29
    • 2011-03-07
    • 1970-01-01
    • 2017-11-30
    • 1970-01-01
    相关资源
    最近更新 更多