0

こんにちは、コードのバグを修正しようとしています。着信フレーズを読み取るとき、このコードは整数をカウントしていないようです。整数以外の単語の数を問題なくカウントします。たとえば、次の文があるとします。「私は 4 匹の猫が大好きです」これは、4 つの非整数語と 1 つの整数があることを示しているはずです。しかし、これは整数の場合ではなく、それを単語として識別しているようです。何かアイデアはありますか?

String[] stra = phrase.split(" ");    
         int numInts = 0;    
         int numNonInts = 0;    
         for (String s : stra) {    
             try {    
                 Integer.parseInt(s);    
             }    
             catch(NumberFormatException nfe) {    
                 numNonInts++;    
                 continue;    
             }    
             numInts++;    
         }    
4

3 に答える 3

2
     String[] stra = phrase.split("\\W+");    // + for sequences
     int numInts = 0;    
     int numNonInts = 0;    
     for (String s : stra) {    
         try {    
             Integer.parseInt(s);    
             numInts++;    
         }    
         catch (NumberFormatException nfe) {    
             numNonInts++;    
         }    
     }    

2 つのスペースが 1 つの単語としてカウントされます。\\W単語以外のすべての文字も含まれます。

于 2012-07-06T20:56:42.267 に答える
0

予期しない区切り文字 (タブ、ダブル スペース、改行など) を回避するには、分割を次のように置き換えます。

phrase.split("\\s+"); 

の制限を超える数値を取得した可能性がありますInteger

ループを次のように置き換えます。

for (String s : stra) {
    if(s.matches("\\d+"))
        numInts++;    
    else            
        numNonInts++;    
}
于 2012-07-06T20:58:14.050 に答える
0

使用してみてください:

Integer.valueOf(s);

それ以外の

Integer.parseInt(s);
于 2012-07-06T20:54:45.453 に答える