【问题标题】:How to re-input a user's input in case he didn't input anything or inputted wrong?如果用户没有输入任何内容或输入错误,如何重新输入用户的输入?
【发布时间】:2020-01-21 16:49:38
【问题描述】:

我正在开发一个作为大学项目的策划游戏。用户必须按照一定的顺序猜测多种颜色。问题是,如果用户输入诸如“erd”而不是“red”之类的内容,他的机会就会丢失。我想以某种方式使代码显示“无效颜色!”当他输入无效的东西并让他重新输入他的东西时。我有点做到了,但是有一个小问题,请看下面的代码:

void guess(char guessBall[4][10]) {
  for (int i = 0; i < 4; i++) {
    cin >> guessBall[i];
    if (strcmp(guessBall[i], "red") == 0 || strcmp(guessBall[i], "blue") == 0 ||
        strcmp(guessBall[i], "green") == 0 ||
        strcmp(guessBall[i], "yellow") == 0 ||
        strcmp(guessBall[i], "white") == 0 ||
        strcmp(guessBall[i], "black") == 0) {
      continue;
    } else {
      cout << "invalid color!";
      i--;
    }
  }
}

问题是如果用户像这样输入:red blue WRONG black 而不是每次都按回车,它会说“无效颜色!”让他重新进入,但颜色的顺序是错误的。示例:

INPUT: "red WRONG green blue"
OUTPUT: Invalid Color!
INPUT: "Red"
OUTPUT: Your guess: red green blue red

猜测应该是“红红绿蓝”。

如果你们提出任何建议,将不胜感激。 要求的完整代码:编辑:我似乎无法将代码粘贴到我的帖子上,其中的某些部分搞砸了,我不知道该怎么做。我唯一能想到的就是将代码粘贴到 CodePile 页面上。给你:https://www.codepile.net/pile/4rYRMJ93 我认为codepile是一个安全的地方?

【问题讨论】:

  • 这不足以让我们重现问题。向我们展示您的程序的最小版本,以便我们自己运行和测试它。
  • 我上传了cpp文件,大家可以分析一下
  • 向我们展示您的程序的最小版本并将其作为编辑粘贴到您的帖子中。没有人会下载文件。
  • 由于无法将代码粘贴到我的帖子上,因此将代码粘贴到 CodePile 上。
  • 只需让用户重新输入所有内容。毕竟,在控制台中,您可以简单地按下然后更改内容。此外,您应该打印它不理解的单词,也许还有它们的位置。不要选择“第一个错误的单词被更改”,当两个单词错误但他认为只有一个错误时会导致用户沮丧,例如“red rde green blueeuee”。

标签: c++


【解决方案1】:

cin 将按照您输入的顺序接受输入。您的输入示例是“红色错误绿色蓝色红色”。 我的建议是您使用调试器并在continueelse 语句中放置一个断点,您可以看到发生了什么。

我的建议是制作一个处理输入的部分和一个验证答案的部分。然后就可以调用输入函数,直到验证正确为止。

【讨论】:

    【解决方案2】:

    cin 将按照输入的顺序处理输入。由于在第二个“red”之前输入了“red WRONG green blue”,因此第二个红色被放置在输入流的末尾。您的代码可能没问题,只需在测试程序时一次输入一种颜色即可。

    【讨论】:

    • 是的。一次输入一种颜色就可以了。我的问题是,你怎样才能使这种输入颜色的方式起作用。 (即“红错绿蓝”)
    • 您可以先接受所有四种颜色,然后检查第二个循环中的颜色。对于每种不正确的颜色,打印错误并使用 while 循环提示另一种颜色,即 while (!validInput()))。我建议打印无效颜色以使其更加用户友好:“无效颜色:错误”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 2021-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多