2012-07-28 40 views
1

讓我們說我有大多數的文件,以及一些信計數的數字,而從文件中讀取

1 
4 
5 
d o 
2 
8 22 
6 
f 

所以我要算多少數字和字母,我只可以使用nextInt()方法。這裏是我正在使用的代碼,但出於某種原因,我得到了一個無限循環,在做了一些調試(打印輸入)後,它會停在第5位。爲什麼我在這裏做錯了?

public static void mixedF() { 
     int numbers = 0; 
     int words = 0; 
     int num;  
     try { 
      Scanner in = new Scanner(new File("myFile.txt")); 
      while(in.hasNext()) { 
       try { 
        num = in.nextInt(); 
        System.out.println(num); 
        numbers++; 
       } 
       catch (InputMismatchException e) { words++; }    

       }    

      System.out.println("numbrers: "+numbers); 
      System.out.println("words: "+words); 
     } 
     catch (FileNotFoundException ex) { ex.getMessage(); }   
    } 

回答

5

您需要添加in.next();catch,否則scanner將無法​​前進。

+0

是的,我只是意識到我有一個無限循環在catch語句 – miatech 2012-07-28 07:22:32

0

問題:您正在使用nextInt()函數單獨讀取整數。

當Scanner遇到一個字符時,它會轉到catch塊。嘗試推進掃描儀在catch塊或字符'd'將被反覆閱讀