我拼命想要从字符串中移除空格(我想要能够转换为int),但我似乎无法将其完全正确。
String input;
if(GamePlay.GameStart == true){
input = Terminal.askString("Welcome to MASTERMIND! \n Please Give in Your Game Attributes \n");
input.replaceAll("\\s","");
}else
input = Terminal.askString("");
if (input.equals("Quit") || input.equals("quit")){
Quit();
}
else if(GamePlay.GameStart == true){
System.out.println(input); .......(code follows)
你能告诉我,我做错了什么? PS:我试过\ W“和\ S”太
答案 0 :(得分:6)
替换
input.replaceAll("\\s","");
与
input = input.replaceAll("\\s","");
它会起作用,因为字符串是不可变的,所以replaceAll()
不会改变你的字符串对象,它会返回一个新字符串。因此,您将变量input
分配给input.replaceAll("\\s","");
此外,您应该尝试遵循Java命名约定,并使字段和变量以小写字母开头。
而且,您也可以替换
if(GamePlay.GameStart == true) {
与
if(GamePlay.GameStart) {
因为在您的版本中,您将GamePlay.GameStart
的值与true
进行比较,并且只有if
块才会执行true
块,而在我的版本中,如果ìf
为GamePlay.GameStart
,则会执行true
块(尽管编译器可能会将其优化掉)。
另一方面,您也可以替换
if (input.equals("Quit") || input.equals("quit")){
与
if (input.equalsIgnoreCase("Quit")) {
因为,我认为这很明显。
答案 1 :(得分:4)
字符串是不可变的。您需要指定由String
返回的新创建的replaceAll
的结果:
input = input.replaceAll("\\s","");
答案 2 :(得分:0)
input.replaceAll("\\s","");
返回删除了空格的字符串。但是如果你没有引用它,你将无法看到结果。你可能意味着:
input = input.replaceAll("\\s","");
答案 3 :(得分:-1)
对于初学者来说,这是一个非常常见的错误。
正如其他人所提到的,您需要知道replaceAll
返回一个新字符串并且不会更改当前字符串,因为字符串在Java中是不可变的。
所以使用:
input=input.replaceAll("\\s","");