2013-12-09 70 views
0

我需要解決以下問題:編寫一個名爲tokenStats的方法,該方法接受包含一系列令牌的掃描器作爲參數。它應該打印所有合法整數標記的總和,所有標記是合法實數但不是整數的總和,以及任何類型的標記總數。例如,如果被稱爲掃描儀數據包含以下標記:保持跟蹤每個令牌

3 3.14 10魷魚10.x的6.0

接着的tokenStats(data)所述呼叫;應打印的輸出如下:

整數:13支

實數:9.14

總令牌:6

如果掃描器沒有令牌,所述方法應打印:

整數:0

實數:0.0

總令牌數:0

所以,這是我的問題。我曾嘗試使用

while (input.hasNext()) { 

if (input.hasNextInt()) { 

,這將創建一個無限循環,

,但如果我用

while (input.hasNext()) { 

input.next(); 

if (input.hasNextInt()) { 

我輸了,如果它是一個int我的第一個記號......

我該怎麼辦?

+0

這將是很好,如果你接受ans或告訴解決方案並關閉線程.. – Neha

回答

0

我建議你查一下這樣..這涵蓋了所有您的方案

int totalint =0; 
float totalfloat=0 ; 
int count=0; 
while(input.hasNext()) 
{ 
    String next = input.next(); 
    int n; float f; 
    try{ 
     if(next.contains(".") 
     { 
      f= Float.parseFloat(next); 
      totalfloat += f; 
     } 
     else{ 
      n= Integer.parseInt(next); 
      totalint +=n; 
     }    
    } 
    catch(Exception e){ /*not int nor a float so nothing*/ } 
    count++; 
} 
0

爲了確定您的文件整數,我建議做這樣的事情

以下變量加入量你的代碼

ArrayList<Integer> list = new ArrayList<Integer>(); 
int EntryCount = 0; 
int IntegerCount =0; 

然後通過文件輸入看時嘗試這樣的事情是s是掃描儀的一個實例

 while (s.hasNext()) { 
       if(s.hasNextInt() == true){ 
         int add =s.nextInt(); 
         System.out.println(add); 
          list.add(add); 
          IntegerCount++; 
        } 
        EntryCount++; 
       } 

然後爲了找出所有整數的總和,你將遍歷數組列表。

-1
public static void tokenStats(Scanner input) { 
    int integers = 0; 
    double real = 0.0; 
    int tokens = 0; 
    while (input.hasNext()) { 
     if (input.hasNextInt()) { 
      integers+= input.nextInt(); 
     } else if (input.hasNextDouble()) { 
      real+= input.nextDouble(); 
     } else { 
      input.next(); 
     } 
     tokens++; 
    } 
    System.out.println("integers: " + integers); 
    System.out.println("real numbers: " + real); 
    System.out.println("total tokens: " + tokens); 
}