0

我拼命地试图从字符串中删除空格(那晚我希望能够转换为 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"

4

4 回答 4

6

代替

input.replaceAll("\\s","");

input = input.replaceAll("\\s","");

它将起作用,因为字符串是不可变的,因此replaceAll()不会更改您的字符串对象,它将返回一个新对象。因此,您将变量分配给input由返回的字符串input.replaceAll("\\s","");

此外,您应该尝试遵循 Java 命名约定,并让您的字段和变量以小写字母开头。

而且,您还可以更换

if(GamePlay.GameStart == true) {

if(GamePlay.GameStart) {

因为在您的版本中,您比较了GamePlay.GameStartwith的值true,并且仅在评估为 时才执行该iftrue,而在我的版本中,如果是ìf则执行该块(尽管编译器可能无论如何都会对其进行优化)。GamePlay.GameStarttrue

另一方面,您也可以替换

if (input.equals("Quit") || input.equals("quit")){

if (input.equalsIgnoreCase("Quit")) {

因为,我认为这很明显。

于 2013-01-26T17:55:37.243 回答
4

字符串是不可变的。您需要分配由String返回的新创建的结果replaceAll

input = input.replaceAll("\\s","");
于 2013-01-26T17:55:43.573 回答
0

input.replaceAll("\\s","");返回删除了空格的字符串。但是,如果您不保留对它的引用,您将无法看到结果。你可能的意思是:

input = input.replaceAll("\\s","");
于 2013-01-26T17:55:38.647 回答
-1

对于初学者来说,这是一个非常常见的错误。

正如其他人所提到的,您需要知道它replaceAll返回一个新字符串并且不会更改当前字符串,因为字符串在 Java 中是不可变的。

所以使用:

input=input.replaceAll("\\s","");

如果您愿意,您可以使用助手插件来帮助您解决此类错误,例如findBugscodePro

于 2013-01-26T17:57:53.637 回答