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++;    
         }    
     }    

两个空格算作一个词。还\\W包括所有非单词字符。

于 2012-07-06T20:56:42.267 回答
0

尝试使用:

Integer.valueOf(s);

代替

Integer.parseInt(s);
于 2012-07-06T20:54:45.453 回答
0

为避免意外的分隔符(如制表符、双空格或换行符),请将 split 替换为:

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

也许你得到的数字超过了Integer.

将循环替换为:

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