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.GameStartと比較し、その評価がである場合にtrueのみブロックを実行しますが、私のバージョンでは、ブロックはそうである場合に実行されます(コンパイラはおそらくそれを最適化しますが)。iftrueìfGamePlay.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 に答える