我现在需要让我的程序输出:
输入一个词: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));
}
}
}
}
答案 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()语句中添加一些独特的文本,以便它们可以与您区分开来。这个问题并不遥远......
祝你好运!