Java:识别字符串中的整数和非整数



您好,我正在尝试修复代码中的错误。读取传入短语时,此代码似乎不计算整数。它计算非整数单词的数量没有问题。例如,如果我有以下句子:"我爱我的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++;    
         }    
     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还包括所有非单词字符。

尝试使用:

Integer.valueOf(s);

而不是

Integer.parseInt(s);

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

phrase.split("\s+"); 

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

将循环替换为:

for (String s : stra) {
    if(s.matches("\d+"))
        numInts++;    
    else            
        numNonInts++;    
}

最新更新