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