Java 无法检测空格或标点符号
代码基本上是abc123到abc246的翻倍。现在这里的问题是,它不会检测空格或标点符号,它会给我一个错误,行int i=Integer.parseInt(句子);。有什么想法吗?谢谢 编辑:此代码要求用户通过扫描仪输入句子Java 无法检测空格或标点符号,java,Java,代码基本上是abc123到abc246的翻倍。现在这里的问题是,它不会检测空格或标点符号,它会给我一个错误,行int i=Integer.parseInt(句子);。有什么想法吗?谢谢 编辑:此代码要求用户通过扫描仪输入句子 else { String woah = sentence; sentence = sentence.replaceAll("\\D", ""); int i = Int
else
{
String woah = sentence;
sentence = sentence.replaceAll("\\D", "");
int i = Integer.parseInt(sentence);
int j = i * 2 ;
woah = woah.replaceAll("" + i, "" + j);
System.out.println(woah);
}
更简单的方法:
StringBuilder woah = new StringBuilder();
StringBuilder number = new StringBuilder();
for(int i = 0; i < sentence.length(); i++) {
char c = sentence.charAt(i);
if(Character.isDigit(c)) {
number.append(c);
} else {
woah.append(c);
}
woah.append(Integer.parseInt(number.toString()) * 2);
System.out.println(woah.toString());
}
StringBuilder woah=new StringBuilder();
StringBuilder编号=新的StringBuilder();
for(int i=0;i<句子长度();i++){
char c=句子charAt(i);
if(字符isDigit(c)){
编号。附加(c);
}否则{
附加(c);
}
append(Integer.parseInt(number.toString())*2);
System.out.println(woah.toString());
}
不确定正则表达式(“\D”)为什么不适合您,它适合我。或者,您可以尝试使用下面的正则表达式
sentence = sentence.replaceAll("[^0-9]", "");
正则表达式是实心的,应该删除所有非数字字符。只有当字符串中没有数字时,该行才会引发异常。这让我相信你在获取信息时犯了一个错误
您是使用
Scanner.nextLine
进行输入,还是使用Scanner.next
?如果不使用分隔符,则应使用前者。对于“foo888”,所需的结果应该是什么?“\\D”是什么?如果你想让它是空格,为什么不直接写“?\\D所有的非数字都很好创建一个包含所有字符(标点符号和空格)的字符串,你需要检查并遍历它?当语句是foo888
时,这会打印foo161616
而不是foo1766
。对不起,误解了你想要的。编辑了我的答案。关键是你不需要使用正则表达式。我的上帝先生,你是个天才。非常感谢你。编辑:在我修复后,我看到了另一个问题。如果我在不同的部分输入整数,例如1woah1,输出将保持与输入相同。您的代码没有考虑分开的整数。我猜您希望它输出2woah2
?一个建议是将解析行替换为句子。replaceAll(\\D',”)代码>这样您就只有空格和数字了。然后删去句子。然后通过这个正则表达式.replaceAll(“\\s+”,”)运行它代码>这样就不会有多个空格。现在使用语句拆分。拆分(“”)代码>。现在有了一个字符串形式的整数数组。可以循环遍历该数组,并将每个整数加倍。然后技巧是将新的双整数放入原始字符串中。