2014-10-28 172 views
-1

我現在需要讓我的程序輸出這樣的:正確while循環輸出(爪哇)

輸入一個單詞:房子
你想要什麼字母代替?:一個
有一個在房子裏沒有一個。
你想要替換什麼字母?:b
沒有內部。
你想替換什麼字母?:e
你想用什麼字母來代替它? w
新單詞是housw。
_____________________________________。

這裏是我的電流輸出:

輸入一個單詞:房子
你想要什麼字母代替?:一個
有一個在房子裏沒有一個
什麼信你要替換?: b
你想用什麼字母來代替它?

_____________________________________。

我遇到了麻煩,我的while循環。而我不知道如何糾正錯誤。這裏是我的代碼:

import java.util.Scanner; 
public class WordScrambler { 

    //name 

    public static void main(String[] args) { 

     String word = ""; 
     Scanner keyboard = new Scanner(System.in); 

     System.out.print("Enter a word: " + word); 
     word = keyboard.nextLine(); 


     String readChar = null; 
     System.out.print("What letter do you want to replace?: "); 
     readChar = keyboard.next(); 

     while(true) 
     { 
      if(word.contains(readChar)) 
      { 
       String changeChar; 
       System.out.print("With what letter do you wish to replace it? "); 
       changeChar = keyboard.next(); 

       System.out.println(word.replace(readChar, changeChar)); 

      } 
      else 
      { 
       System.out.print("There is no "+ readChar + " in " + word); 
       System.out.println(); 
       System.out.print("What letter do you want to replace?: "); 
       readChar = keyboard.next(); 
       String changeChar; 
       System.out.print("With what letter do you wish to replace it? "); 
       changeChar = keyboard.next(); 
       System.out.println(word.replace(readChar, changeChar)); 
      } 
     } 
    } 
} 
+0

我們沒有爲你做功課。詢問一個合適的問題。 – VeenarM 2014-10-28 21:19:06

+0

你得到了什麼錯誤。請問一個具體的問題 – Chiseled 2014-10-28 21:20:19

+0

這不是while循環的問題。你可以標題你的問題有關嗎? – khelwood 2014-10-28 21:20:28

回答

0

如果您在

else部分看,你可以清楚地看到,你問他有什麼願望函,以取代原信用戶,而不是簡單地說,這個詞不包含字母。

您可以通過簡單地從您的else語句中刪除兩個「問題」部分來解決此問題。

零部件刪除:

System.out.print("What letter do you want to replace?: "); 
    readChar = keyboard.next(); 
    String changeChar; 
    System.out.print("With what letter do you wish to replace it? "); 
    changeChar = keyboard.next(); 
    System.out.println(word.replace(readChar, changeChar)); 
+0

當我在代碼中刪除這部分時,「沒有內部」變成了一個永無止境的循環。 @ Code0 – Alex 2014-10-28 21:31:44

+0

是的,因爲你再也不要求再輸入一次(scanner.next()阻止主線程在主線程上運行)。只需申請一個新的輸入,然後設置好。 @Alex – Code0 2014-10-28 21:37:08

+0

謝謝! @ Code0 – Alex 2014-10-28 21:46:53

1

在你else語句一旦一個人進入,這並不存在,你告訴他們,讓他們選擇一個新字符的字符,但你甚至不檢查,如果這種新的性格中存在字符串,而是直接問他們你想用什麼字符替換它。 你else語句應該是這樣的:

else{ 
     System.out.print("There is no "+ readChar + " in " + word); 
     System.out.print("What letter do you want to replace?: "); 
     readChar = keyboard.next(); 
    } 

這意味着你的循環將再次運行,如果信存在驗證。

0

問題出在你的其他塊語句的順序排列。如果你有一個調試器,請嘗試調試你的例子(一步一步通過你的程序 - 你會看到問題)。如果您沒有調試器,請嘗試更改system.out.println()顯示的文本。只需在每個system.out.println()語句中添加一些獨特的文本,以便它們可以爲您區分。問題不遠處...

祝你好運!