您好我正在尝试修复代码中的错误。在读取传入的短语时,此代码似乎不计算整数。它计算非整数字的数量没有问题。 例如,如果我有以下句子: “我爱我的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++;
}
答案 0 :(得分: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
包括所有非单词字符。
答案 1 :(得分:0)
尝试使用:
Integer.valueOf(s);
而不是
Integer.parseInt(s);
答案 2 :(得分:0)
要避免意外的分隔符(例如制表符,双倍空格或换行符),请将以下分隔符替换为:
phrase.split("\\s+");
也许你的数字超过Integer
的限制。
用以下方式替换你的循环:
for (String s : stra) {
if(s.matches("\\d+"))
numInts++;
else
numNonInts++;
}