2016-12-25 53 views
-3

我有这个小码:输入不一致诠释

Scanner vloz = new Scanner(System.in); 
    int cisla = 0; 
    int i = 0; 
    while(i < 10){ 
      try { 
       System.out.println("Vloz cislo " + i + ":"); 
       int cislo = Integer.parseInt(vloz.nextLine()); 
       ++i; 
       cisla = cisla + cislo; 
       } 
      catch(InputMismatchException exception){ 
       System.out.println("Nevlozil si cislo!"); 
       } 
      } 
    float priemer = cisla/i; 
    System.out.println("Priemer cisel je " + priemer + "."); 
    } 
}  

但总是当我运行它,然后键入其他charakters则INT,程序崩溃并没有通过“捕获”运行。 该程序的目标是当另一个然后INT键入显示错误消息,不要添加到INT我给另一个选项给用户添加intenger。

+3

你确定引发的异常是一个'InputMismatchException'而不是其他一些异常类型,比如'NumberFormatException'? –

+0

......我的坏......非常感谢你的努力......我没有抓住它......现在平稳地奔跑 –

回答

0

你必须抓住一个NumberFormatException而非InputMismatchException像这样:

import java.util.Scanner; 

class Main { 
    public static void main(String[] args) { 
    Scanner vloz = new Scanner(System.in); 
    int cisla = 0; 
    int i = 0; 
    while(i < 10){ 
     try { 
     System.out.print("Vloz cislo " + i + ":"); 
     int cislo = Integer.parseInt(vloz.nextLine()); 
     i++; 
     cisla = cisla + cislo; 
     } catch(NumberFormatException exception) { 
     System.out.println("Nevlozil si cislo!"); 
     } 
    } 
    float priemer = cisla/i; 
    System.out.println("Priemer cisel je " + priemer + "."); 
    } 
} 

试试吧here!

0

你赶上了错误的异常。方法parseInt(String s)会抛出一个NumberFormatException而不是 a InputMismatchException。将你的catch子句更改为catch(NumberFormatException exception)

0

import java.util。*; 公共类演示{

public static void main (String []args){ 

    Scanner vloz = new Scanner(System.in); 
    int cisla = 0; 
    int i = 0; 
    while(i < 10){ 
      try { 
       System.out.println("Vloz cislo " + i + ":"); 
       int cislo = Integer.parseInt(vloz.nextLine()); 
       ++i; 
       cisla = cisla + cislo; 
       } 
      catch(InputMismatchException exception){ 
       System.out.println("Nevlozil si cislo!"); 
       } 
      } 
    float priemer = cisla/i; 
    System.out.println("Priemer cisel je " + priemer + "."); 

} 

}

我不知道为什么它坠毁,但此代码的工作。我想你可能忘记了import.java。*;