如果用户未输入任何内容或输入错误,如何重新输入用户的输入?

时间:2020-01-19 21:26:58

标签: c++

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

    @IBAction func duckduckgo(_ sender: Any) {
        let contentView = ContentViewDemo()
        window = NSWindow(
            contentRect: NSRect(x: 0, y: 0, width: 480, height: 300),
            styleMask: [.titled, .closable, .miniaturizable, .resizable, .fullSizeContentView],
            backing: .buffered, defer: false)
        window.center()
        window.setFrameAutosaveName("Main Window")
        window.contentView = NSHostingView(rootView: contentView)
        window.makeKeyAndOrderFront(nil)
        window.title = "DuckDuckGo http://duckduckgo.com"
        self.browser.load(url: URL(string: "http://duckduckgo.com")!)
NSMenuItem (duckduckgo isEnabled: true)
    }

问题在于,如果用户输入如下内容: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--; } } } 而不是每次都按Enter,它将显示“无效的颜色!”。并让他重新进入,但是颜色的顺序将是错误的。例如:

red blue WRONG black

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

如果你们提出任何建议,将不胜感激。 按要求提供完整代码:编辑:我似乎无法将代码粘贴到我的帖子上,部分代码混乱了,我也不知道该怎么办。我唯一想到的就是将代码粘贴到CodePile页面上。你去了:https://www.codepile.net/pile/4rYRMJ93 我认为密码堆是一个安全的地方?

2 个答案:

答案 0 :(得分:0)

cin将按照您输入的顺序进行输入。您输入的示例是“红色WRONG绿色蓝色红色”。 我的建议是,您使用调试器,并在continue语句中放置一个断点else和一个断点,然后您可以查看发生了什么。

我的建议是让一部分处理输入内容,另一部分验证答案。然后,您可以调用输入函数,直到验证正确为止。

答案 1 :(得分:0)

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