c ++:if语句无法正常运行并继续进行无效输出
c++ : The if statement not functioning correctly and proceeds to Invalid output
刚开始学习 C++ 并尝试制作一个自动订购系统,但是在尝试 运行 继续使用它之前我遇到了这个问题:
#include <iostream>
using namespace std;
char acoustic, fender, hartwood, electric, gibson, ibanez, drums, pearl,
roland, piano, casio;
char rolandpi, equip, string, headphone, amp, mixer, micro, tuner, pick,
music, Yes, No;
int pay1 = 0, pay2 = 0;
int main()
{
cout << "Welcome to the Music Shop" << endl <<endl;
cout << "a. Acoustic Guitar" << endl;
cout << "a.1 Fender Acoustic Guitar - P6,900.00" << endl;
cout << "a.2 Hartwood Acoustic Guitar - P6,300.00" << endl <<endl;
cout << "b. Electric Guitar" << endl;
cout << "b.1 Gibson Electric Guitar -P8,500.00" << endl;
cout << "b.2 Ibanez Electric Guitar -P25,000.00" << endl <<endl;
cout << "c. Drums" << endl;
cout << "c.1 Pearl Drum Kits -P27,000.00" << endl;
cout << "c.2 Roland Electronic Drums -P24,000.00" << endl <<endl;
cout << "d. Piano" << endl;
cout << "d.1 Casio Digital Piano -P19,000.00" << endl;
cout << "d.2 Roland Piano -P120,000.00" << endl <<endl;
cout << "e. Music Equipments" << endl;
cout << "e.1 Guitar String -P113.00" << endl;
cout << "e.2 Headphones -P1,600.00" << endl;
cout << "e.3 Amplifier -P2,800.00" << endl;
cout << "e.4 Digital Mixer -P4,750.00" << endl;
cout << "e.4 Vocal Microphone -P860.00" << endl;
cout << "e.5 Guitar Tuner -P537.00" << endl;
cout << "e.6 Guitar Pick -P360.00" << endl <<endl;
cout << "Choose the music instrument or equipment you want to buy: ";
cin >> music;
switch (music)
{
case 'a':
cout<< "Acoustic Guitar" << endl;
cout<< "1. Fender Acoustic Guitar - P6,900.00" << endl;
cout<< "2. Hartwood Acoustic Guitar - P6,300.00" << endl <<endl;
cout<<"Choose from the available Acoustic Guitars:";
cin>>acoustic;
if (acoustic == 1){
cout<<"Enter your payment:";
cin>>pay1;
if (pay1=6900){
cout<<"You have succesfully purchased Fender Acoustic Guitar"<<endl;
}
else if (pay1>6900){
pay1 -= 6900;
cout<<"Your change is:"<<pay1<<endl;
}
else (pay1<6900);
{
cout<<"You do not have enough money"<<endl;
}
}
else if (acoustic == 2){
cout<<"Enter your payment:";
cin>>pay1;
if (pay1=6300){
cout<<"You have succesfully purchased Fender Acoustic Guitar"<<endl;
}
else if (pay1>6300){
pay1 -= 6300;
cout<<"Your change is:"<<pay1<<endl;
}
else (pay1<6300);
{
cout<<"You do not have enough money"<<endl;
}
}
else {
cout<<"Invalid"<<endl;
}
}
}
我已经检查了我的 if else
语句,但找不到问题所在。
从 "Choose from the available Acoustic Guitars" 输入 1
或 2
后,它继续进行到 "invalid"。
您在此处阅读 char
:
cout << "Choose from the available Acoustic Guitars:";
cin >> acoustic;
但随后你将它与一行后的 int
进行比较:
if (acoustic == 1) {
这应该是:
if (acoustic == '1') {
还有这个:
if (pay1 = 6900) {
应该是:
if (pay1 == 6900) {
否则无论输入什么你都会得到不正确的输出,因为pay1 = 6900
将pay1
设置为6900
和returns6900
,这是隐式转换为 true
.
还有这一行:
else (pay1 < 6900);
需要改为
else if (pay1 < 6900)
因为否则 (pay1 < 6900)
不是 if
语句的条件,而是 (pay1 < 6900);
是 else
情况下发生的情况(它只是计算一个布尔值和丢弃它),导致始终打印以下 "You do not have enough money"
消息。
@Blaze 非常感谢你,现在我快完成了,现在我在输入 Yes 后遇到 Yes 或 No 的问题,程序刚刚结束,我不知道它有什么问题 >.<
cout<<"\nWould you like to buy an Electric Guitar?"<<endl;
cout<<"Yes or No?"<<endl;
cin>>answer;
if (answer == Yes){
cout<< "Electric Guitar" << endl;
cout<< "1. Gibson Electric Guitar -P8,500.00" << endl;
cout<< "2. Ibanez Electric Guitar -P25,000.00" << endl <<endl;
cout<<"Choose from the available Electric Guitars:";
cin>>electric;
if (electric=='1'){
cout<<"Enter your payment:";
cin>>pay2;
if (pay2==8500){
cout<<"You have succesfully purchased Fender Acoustic Guitar"<<endl;
}
else if (pay2>8500){
pay2 -= 8500;
cout<<"Your change is:"<<pay2<<endl;
}
else if(pay2<8500)
{
cout<<"You do not have enough money"<<endl;
}
}
else if (electric=='2'){
cout<<"Enter your payment:";
cin>>pay2;
if (pay2==25000)
{
cout<<"You have succesfully purchased Fender Acoustic Guitar"<<endl;
}
else if (pay2>25000){
pay2 -= 25000;
cout<<"Your change is:"<<pay2<<endl;
}
else if (pay2<25000)
{
cout<<"Invalid"<<endl;
}
}
else {
cout<<"Invalid";
}
}
else if (No){
cout<<"Thank you for checking our other products";
}
}
}
刚开始学习 C++ 并尝试制作一个自动订购系统,但是在尝试 运行 继续使用它之前我遇到了这个问题:
#include <iostream>
using namespace std;
char acoustic, fender, hartwood, electric, gibson, ibanez, drums, pearl,
roland, piano, casio;
char rolandpi, equip, string, headphone, amp, mixer, micro, tuner, pick,
music, Yes, No;
int pay1 = 0, pay2 = 0;
int main()
{
cout << "Welcome to the Music Shop" << endl <<endl;
cout << "a. Acoustic Guitar" << endl;
cout << "a.1 Fender Acoustic Guitar - P6,900.00" << endl;
cout << "a.2 Hartwood Acoustic Guitar - P6,300.00" << endl <<endl;
cout << "b. Electric Guitar" << endl;
cout << "b.1 Gibson Electric Guitar -P8,500.00" << endl;
cout << "b.2 Ibanez Electric Guitar -P25,000.00" << endl <<endl;
cout << "c. Drums" << endl;
cout << "c.1 Pearl Drum Kits -P27,000.00" << endl;
cout << "c.2 Roland Electronic Drums -P24,000.00" << endl <<endl;
cout << "d. Piano" << endl;
cout << "d.1 Casio Digital Piano -P19,000.00" << endl;
cout << "d.2 Roland Piano -P120,000.00" << endl <<endl;
cout << "e. Music Equipments" << endl;
cout << "e.1 Guitar String -P113.00" << endl;
cout << "e.2 Headphones -P1,600.00" << endl;
cout << "e.3 Amplifier -P2,800.00" << endl;
cout << "e.4 Digital Mixer -P4,750.00" << endl;
cout << "e.4 Vocal Microphone -P860.00" << endl;
cout << "e.5 Guitar Tuner -P537.00" << endl;
cout << "e.6 Guitar Pick -P360.00" << endl <<endl;
cout << "Choose the music instrument or equipment you want to buy: ";
cin >> music;
switch (music)
{
case 'a':
cout<< "Acoustic Guitar" << endl;
cout<< "1. Fender Acoustic Guitar - P6,900.00" << endl;
cout<< "2. Hartwood Acoustic Guitar - P6,300.00" << endl <<endl;
cout<<"Choose from the available Acoustic Guitars:";
cin>>acoustic;
if (acoustic == 1){
cout<<"Enter your payment:";
cin>>pay1;
if (pay1=6900){
cout<<"You have succesfully purchased Fender Acoustic Guitar"<<endl;
}
else if (pay1>6900){
pay1 -= 6900;
cout<<"Your change is:"<<pay1<<endl;
}
else (pay1<6900);
{
cout<<"You do not have enough money"<<endl;
}
}
else if (acoustic == 2){
cout<<"Enter your payment:";
cin>>pay1;
if (pay1=6300){
cout<<"You have succesfully purchased Fender Acoustic Guitar"<<endl;
}
else if (pay1>6300){
pay1 -= 6300;
cout<<"Your change is:"<<pay1<<endl;
}
else (pay1<6300);
{
cout<<"You do not have enough money"<<endl;
}
}
else {
cout<<"Invalid"<<endl;
}
}
}
我已经检查了我的 if else
语句,但找不到问题所在。
从 "Choose from the available Acoustic Guitars" 输入 1
或 2
后,它继续进行到 "invalid"。
您在此处阅读 char
:
cout << "Choose from the available Acoustic Guitars:";
cin >> acoustic;
但随后你将它与一行后的 int
进行比较:
if (acoustic == 1) {
这应该是:
if (acoustic == '1') {
还有这个:
if (pay1 = 6900) {
应该是:
if (pay1 == 6900) {
否则无论输入什么你都会得到不正确的输出,因为pay1 = 6900
将pay1
设置为6900
和returns6900
,这是隐式转换为 true
.
还有这一行:
else (pay1 < 6900);
需要改为
else if (pay1 < 6900)
因为否则 (pay1 < 6900)
不是 if
语句的条件,而是 (pay1 < 6900);
是 else
情况下发生的情况(它只是计算一个布尔值和丢弃它),导致始终打印以下 "You do not have enough money"
消息。
@Blaze 非常感谢你,现在我快完成了,现在我在输入 Yes 后遇到 Yes 或 No 的问题,程序刚刚结束,我不知道它有什么问题 >.<
cout<<"\nWould you like to buy an Electric Guitar?"<<endl;
cout<<"Yes or No?"<<endl;
cin>>answer;
if (answer == Yes){
cout<< "Electric Guitar" << endl;
cout<< "1. Gibson Electric Guitar -P8,500.00" << endl;
cout<< "2. Ibanez Electric Guitar -P25,000.00" << endl <<endl;
cout<<"Choose from the available Electric Guitars:";
cin>>electric;
if (electric=='1'){
cout<<"Enter your payment:";
cin>>pay2;
if (pay2==8500){
cout<<"You have succesfully purchased Fender Acoustic Guitar"<<endl;
}
else if (pay2>8500){
pay2 -= 8500;
cout<<"Your change is:"<<pay2<<endl;
}
else if(pay2<8500)
{
cout<<"You do not have enough money"<<endl;
}
}
else if (electric=='2'){
cout<<"Enter your payment:";
cin>>pay2;
if (pay2==25000)
{
cout<<"You have succesfully purchased Fender Acoustic Guitar"<<endl;
}
else if (pay2>25000){
pay2 -= 25000;
cout<<"Your change is:"<<pay2<<endl;
}
else if (pay2<25000)
{
cout<<"Invalid"<<endl;
}
}
else {
cout<<"Invalid";
}
}
else if (No){
cout<<"Thank you for checking our other products";
}
}
}