【问题标题】:Keep asking for input if input is already known如果输入已知,请继续询问输入
【发布时间】:2018-10-17 19:56:59
【问题描述】:

我有这个代码

public void givenLetter(){
        givenLetter = player1.giveLetter();
        if(guessedLetters.containsKey(givenLetter)) {
            return;
        }
}

如果返回的字母在guessedLetters 哈希图中已经知道,则需要继续执行player1.giveLetter()

例如:

guessedLetters = {"A", "B"}

player1.giveLetter() 返回“A”

运行 player1.giveLetter()

player1.giveLetter() 再次返回“A”

运行 player1.giveLetter()

player1.giveLetter() 返回“C”

做剩下的方法

【问题讨论】:

  • 这是一个很好的问题陈述,但您实际上并没有提出问题。你特别坚持什么?
  • @azurefrog 它需要运行函数 giveLetter() 直到它返回一个在 guessedLetters 哈希图中不知道的字母。
  • 这是一个适合您的示例stackoverflow.com/questions/17108943/…

标签: java loops hashmap


【解决方案1】:

如果我没看错你的问题,你想继续运行giveLetter() 函数,直到你得到一个在guessedLetters 映射中找不到的输入。

为此,我建议使用while 循环。 while 循环将一直运行,直到给定条件为 false

例如:

int i = 0;
while(i / 2 != 1) {
    i ++;
}

i /2 != 1 为真时,此循环将运行。 i = 0 和 i = 1 为真,i = 2 为假 - 所以它会停止。

所以考虑到你的问题,我建议:

public void givenLetter(){
    String givenLetter = player1.giveLetter(); // Get the letter
    while (guessedLetters.containsKey(givenLetter)) {  // While the given letter is found, continue to run the method.
        givenLetter = player1.giveLetter();
    }  // Exit the loop once the given letter is not found
    // Rest of function here
}

【讨论】:

  • 现在不是当给定的Letter存在于hash map中时,它要求一个新的吗?
  • 是的,它会继续请求一个新的,直到在哈希映射中找不到给定的字母
  • 没问题!很高兴我能帮上忙
【解决方案2】:

类似这样的循环:

public void givenLetter(){
    while (true) {
        String givenLetterString = player1.giveLetter();
        if(!guessedLetters.containsKey(givenLetterString)) 
            return;
    }
}

它将一直运行,直到集合中不存在该字母。

while (true) 会创建一个无限循环,并且只有在执行return 语句时才会停止。

【讨论】:

    猜你喜欢
    • 2019-04-03
    • 2017-06-15
    • 1970-01-01
    • 1970-01-01
    • 2016-11-03
    • 1970-01-01
    • 2022-11-12
    • 2021-03-27
    • 1970-01-01
    相关资源
    最近更新 更多