正确的while循环输出(Java)

时间:2014-10-28 21:17:25

标签: java loops while-loop

我现在需要让我的程序输出:

输入一个词:house
你要用什么字母取代?:a 没有内部。
你想替换什么信?:b
没有内部。
你想要取代什么信?:e
你希望用什么信取代它? w ^
新词是housw _____________________________________。

这是我目前的输出:

输入一个词:house
你要用什么字母取代?:a 内部没有 你想替换什么信?: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));
            }
        }
    }
}

3 个答案:

答案 0 :(得分:1)

在你的else语句中,一旦一个人输入了一个不存在的角色,你告诉他们并让他们选择一个新角色,但是你甚至不检查这个新角色是否存在于字符串中,而是直接询问他们你想用什么角色代替它。 您的其他声明应如下所示:

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

这意味着您的循环将再次运行并验证该字母是否存在。

答案 1 :(得分: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));

答案 2 :(得分:0)

问题出在你的else块中的语句序列中。如果您有调试器,请尝试调试您的示例(逐步完成您的程序 - 您将看到问题)。如果您没有调试器,请尝试更改system.out.println()正在显示的文本。只需在每个system.out.println()语句中添加一些独特的文本,以便它们可以与您区分开来。这个问题并不遥远......

祝你好运!