C++ 尝试使用“完成由用户输入确定的循环”;而(COM!=“Y”N“N”);

C++ 尝试使用“完成由用户输入确定的循环”;而(COM!=“Y”N“N”);,c++,oop,while-loop,char,boolean,C++,Oop,While Loop,Char,Boolean,因此,我遇到的问题是在我的类IOutro中,在它的函数commandInput()中,我的意图是创建一个简单的基于命令的循环,询问用户是否希望再次使用或关闭该程序 我使用这个程序的目标是只使用类来存储函数,我主要想要的是调用这些函数的对象。只是第一次尝试OOP 因此,当我尝试运行此程序时,出现了错误 ||=== Build: Debug in Tutorials (compiler: GNU GCC Compiler) ===| C:\Users\Jason\Documents\Tutoria

因此,我遇到的问题是在我的类
IOutro
中,在它的函数
commandInput()
中,我的意图是创建一个简单的基于命令的循环,询问用户是否希望再次使用或关闭该程序

我使用这个程序的目标是只使用类来存储函数,我主要想要的是调用这些函数的对象。只是第一次尝试OOP

因此,当我尝试运行此程序时,出现了错误

 ||=== Build: Debug in Tutorials (compiler: GNU GCC Compiler) ===|
C:\Users\Jason\Documents\Tutorials\main.cpp||In function 'int main()':|
C:\Users\Jason\Documents\Tutorials\main.cpp|57|error: could not convert 'COM.std::basic_string<_CharT, _Traits, _Alloc>::operator=<char, std::char_traits<char>, std::allocator<char> >(((const char*)"Y"))' from 'std::basic_string<char>' to 'bool'|
||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

让我们看看代码中的问题

首先,您不需要将
COM
声明为字符串,将其声明为char就足够了,如

char COM = 'Y';
接下来,您应该更改
commandInput()
中的while循环条件

while (COM != "Y" || "N" )

您的情况不正确,您需要像上面给出的那样检查这两种情况

现在您可能想知道为什么我将
|
更改为
&&
。这是因为如果它是
|
,如果
COM
不是
'Y'
COM
不是
'N'
,循环将继续。现在就这样想,如果
COM
'Y'
,那么它就不是
'N'
,如果它不是
'N'
,那么while循环中的条件就满足了,因此它就继续

现在,让我们看看下一个问题。在
main()

while (COM = "Y")
=
是赋值运算符,如果要检查是否相等,则需要使用
=
。就是

while (COM == 'Y' )
简言之,代码的固定版本是(我删除了您的注释,并在我进行更改的地方添加了注释,三行中有更改)

#包括
使用名称空间std;
INTA;
int B;
char COM='Y';//已更改为char
类Arith{
公众:
整数和(整数A,整数B){
INTC=A+B;
返回C;
}
void calc(){
cout>A;
cout B;

cout
while(COM=“Y”)
这是赋值,而不是比较:
while(COM==“Y”)
。此外,每个术语都需要单独的比较表达式:
(COM!=“Y”| COM!=“N”)
也许考虑到case可能是一个好主意,谢谢你,它清除了其中很大一部分,而不是。这给了我最后一点麻烦,我想这是因为变量COM是一个字符串…
,而(COM!=“Y”|!=“N”
我仔细检查了我的
{}
和分号,但我找不到是什么让这部分出错。是因为我声明了错误吗?最后一个问题可能是因为您在
void commandInput()中使用了
|
将其更改为
&&
(它对我有效)。(同时将字符串更改为char)这真是太棒了!太多的帮助了!它不仅解决了我的问题,现在我还有一些地方需要进一步研究和阅读。非常感谢Arun A.S.的建议!
while (COM = "Y")
while (COM == 'Y' )
#include <iostream>    
using namespace std;

int A; 
int B;
char COM = 'Y';                    //  changed to char

class Arith{ 
    public: 
        int sum(int A, int B){ 
            int C = A + B; 
            return C; 
        }
        void calc(){ 
            cout << "Enter a number for A: "; 
            cin >> A; 
            cout << endl; 
            cout << "Enter a number for B: "; 
            cin >> B; 
            cout << endl; 
            cout << "The sum is: " << sum(A, B)<<endl; 
        }
};

class IOutro{ 
    public:
        void goodbye(){ 
            cout << "Thank you!" << endl; 
        }

        void welcome(){ 
            cout << "Welcome!" << endl; 
        }

        void commandInput(){ 
            cout << "\nWould you like to continue?" << endl; 
            cout << "Please type 'Y' for Yes, and 'N' for No." << endl;
            cin >> COM;

            while ( ( COM != 'Y' && COM != 'y' ) && ( COM != 'N' && COM != 'n' ) ) {     // made changes here
                cout << "\nWould you like to continue?" << endl; 
                cout << "Please type 'Y' for Yes, and 'N' for No." << endl; 
                cin >> COM; 
            }


        }
};

int main(){ 

    IOutro IObject; 
    Arith ArithObject; 

    while (COM == 'Y' || COM == 'y' ){         // made changes here 
        IObject.welcome(); 
        ArithObject.calc(); 
        ArithObject.sum(A,B); 
        IObject.commandInput(); 
    }
    IObject.goodbye(); 
    return 0; 
}