代码基本上是abc123到abc246的两倍。现在问题是它不会检测空格或标点符号,它会给我一个错误的行int i = Integer.parseInt(sentence);.有任何想法吗?感谢
编辑:此代码通过扫描程序请求用户输入句子。
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);
}
答案 0 :(得分:0)
不确定为什么你的正则表达式(“\ D”)不适合你,它对我有用。或者,您可以为下面的正则表达式提供一个镜头。
sentence = sentence.replaceAll("[^0-9]", "");
答案 1 :(得分:0)
正则表达式是可靠的,应删除所有非数字字符。如果String中没有数字,该行应该只抛出异常。这让我相信你在输入时犯了错误。
您是使用Scanner.nextLine
进行输入还是Scanner.next
?如果你没有使用分隔符,你应该使用前者。
答案 2 :(得分:-1)
更简单的方法:
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());
}