(C++)如何验证 char 变量的用户输入
(C++) How to validate user input for char variables?
我在比较字符变量的用户输入时遇到问题。我想检查他们对问题的回答是 Y 还是 N。如果他们没有输入 Y 或 N,我想给用户一条错误消息并重新开始循环。
下面是我创建的测试代码,作为我打算使用它的程序的模板。无论用户给出什么输入,程序都会循环。此外,如果用户输入"n"个字符,他们每次都会收到"n"失败!"消息以及初始 cout 消息。如果他们输入 Y,它也会发生,当然它说"成功!
我在网上环顾四周,但还没有找到解决这个问题的人。为什么 == 适用于等效性检查,而 != 不适用于字符(以及字符串)?
#include<iostream>
using namespace std;
int main()
{
char answer;
do{
cout <<"nPlease type Y or N." << endl;
cin >> answer;
if ((answer == 'Y') || (answer == 'N'))
{
cout << "nSuccess!" << endl;
}
else
{
cout << "nFailure!" << endl;
}
}while ((answer != 'Y') || (answer != 'N'));
return 0;
}
问题出在以下行:
while ((answer != 'Y') || (answer != 'N'));
这些条件中的任何一个始终为真,并且您正在应用逻辑 OR,因此您永远无法摆脱此循环。您需要按如下方式更改此设置:
while (answer != 'Y' && answer != 'N')
你误用了布尔的逻辑:析取的否定不是在保持析取的同时对项的否定。相反,您需要否定这些术语并使用连词。
answer
将始终不'Y'
或不'N'
((answer != 'Y') || (answer != 'N'))
你可能
((answer != 'Y') && (answer != 'N'))
((answer != 'Y') || (answer != 'N'));
意味着循环,直到用户输入与'Y'
不同或与'N'
不同的内容,因此当输入'Y'
或'N'
时它就存在,因为当然,它们是不同的。
你应该像下面的代码块一样循环:
do {
// code
} while ( answer == 'Y' && answer == 'N' );
相关文章:
- 如果用户输入无效,如何使用字符串变量-C++重复输入命令
- 如何使用用户输入变量制作二维数组?
- 在 C++ 中声明 const 对象需要用户定义的默认构造函数.如果我有一个可变成员变量,为什么不呢?
- 如果用户输入在整数变量中浮动怎么办?
- C++单个变量来处理来自用户的多个类
- 如何修改用户指定的变量?
- 将私有对象变量与用户输入的变量进行比较
- 如何对字符串变量应用验证,使其仅接受来自用户的字母数据?
- 使用用户的输入直接初始化对象的变量
- 如何使用主函数和来自 getData 函数的用户输入将值初始化为 int 变量 im
- 双变量输出 32767 始终代替用户输入
- 当用户输入int变量的字符串时,输出
- 用户无法为第二个变量输入。C++
- std::cin 无法将命令行中的用户输入传递给具有 char 类型的变量吗?
- 将 c++ 代码中的当前用户环境变量设置为对其他进程(如 cmds)可见
- 以下代码运行后,如何在程序再次运行之前清除用户声明的变量 empName
- C 在用户输入上添加多个变量
- 有什么方法可以让用户选择要输入哪个变量
- 如何基于用户设置的初始变量设置一组常数值
- 我需要创建一个函数在用户下打印"=",但由于变量是使用 main() 声明的,因此函数看不到参数