【问题标题】:Beginner Java program初级Java程序
【发布时间】:2017-03-08 22:01:49
【问题描述】:

我是 Java 初学者,我有以下代码:

public class test
{
   public static void main(String[] args) 
   {
      int a ;
      String b;

      Scanner input = new Scanner(System.in);
      try {

        System.out.println("Enter a: ");
        a = input.nextInt();

    } catch(Exception e )
    {
        System.out.println("That is not a number!");
    }

      System.out.println("Enter your name: ");
      b = input.next();
      System.out.println("Hello " + b);

    }
}

当我给出一个字符串而不是 int 时,代码会进一步执行,我会收到这个结果:

"Enter a:
fsd
That is not a number!
Enter your name: 
Hello fsd"

接球后如何打断? (我已经在 catch 后尝试使用新的 Scanner,但我认为还有其他方法) 提前致谢!

LE:我已经设法用“input.next();”做到了。我实际上想为字符串 b 输入另一个值,但程序自动采用 int a 而不是新值并打印“Hello vsd”,尽管 vsd 是 a 的输入。

【问题讨论】:

  • 中断是什么意思?
  • 您能否再澄清一下您的问题?
  • 你想做什么??
  • System.exit(0) 存在该程序,如果这是您想要的。
  • 如果您将名称部分放在try{...}catch(...){...} aswel 中,那么如果第一部分失败,它将被跳过

标签: java java.util.scanner


【解决方案1】:

the documentation 所述,如果当前标记与整数格式不匹配,Scanner 将不会前进到下一个标记。因此,如果没有抛出异常,则不会消耗令牌,下次调用nextXYZ方法时就可以得到它。

将输入的下一个标记扫描为 int。如果下一个标记无法转换为有效的 int 值,则此方法将抛出 InputMismatchException,如下所述。如果翻译成功,扫描仪会超过匹配的输入。

您可以使用hasNextInt()提前检查,而不是抛出和捕获异常(这是一个繁重的操作):

int a ;
String b;

Scanner input = new Scanner(System.in);
System.out.println("Enter a: ");
if (input.hasNextInt()) {
    a = input.nextInt();
} else {
    System.out.println("That is not a number!");
    // Skip the token so you won't get it later:
    input.nextLine();
}

System.out.println("Enter your name: ");
b = input.next();
System.out.println("Hello " + b);

【讨论】:

    【解决方案2】:

    试试这个

    public class Test{
    public static void main(String[] args){
      int a ;
      String b;
      Scanner input = new Scanner(System.in);
      try {
    
        System.out.println("Enter a: ");
            a = input.nextInt();
        System.out.println("Enter your name: ");
            b = input.next();
        System.out.println("Hello " + b);
    
        }
      catch(Exception e ){
        System.out.println("That is not a number!");
        }
    }
    }
    

    【讨论】:

      【解决方案3】:

      只需如下修改你的 catch 块:

      catch(Exception e )
           {
              System.out.println("That is not a number!");
              System.exit(0);
           }
      

      【讨论】:

      • 使用此代码,程序不会走得更远,我无法输入第二个值(对于名称)。还是谢谢
      【解决方案4】:

      您应该尝试使用以下块

      input.hasNextInt()
      

      因为它不需要你使用 catch 或 throw 异常,而是使用 if 和 else 语句。

      您的代码仍在继续,因为 catch 块只是捕获异常并将其替换为 System.out.println 打印 “这不是数字!”

         } catch(Exception e )
      {
          System.out.println("That is not a number!");
      }
      

      这样做后代码会继续

       System.out.println("Enter your name: ");
       b = input.next();
       System.out.println("Hello " + b);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-21
        • 2020-10-14
        • 2018-12-20
        • 2013-01-26
        • 2015-05-29
        • 2010-12-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多