C++; 我理解C++的转换语句有困难。< /P>
我必须输入两次接受的整数间隔,函数才能返回到开关。然后直接进入案例2 继承类:C++; 我理解C++的转换语句有困难。< /P>,c++,switch-statement,C++,Switch Statement,我必须输入两次接受的整数间隔,函数才能返回到开关。然后直接进入案例2 继承类: class Fugl : public DyrLuft { private: int alder; public: Fugl() : DyrLuft() { } void les() { do { cout << "\nS
class Fugl : public DyrLuft
{
private:
int alder;
public:
Fugl() : DyrLuft()
{ }
void les()
{
do
{
cout << "\nSkriv inn fuglens alder: ";
cin >> alder;
if(alder < 0 || alder > 130)
cout << "\nDenne alderen virket usannsynlig, prøv igjen!\n";
} while(alder < 0 || alder > 130);
}
};
int main()
{
char valg = '\q';
cout << "Hvilken dyreart ønsker du å registrere? (Q for å avslutte)"
<< "\n1) - Fugl \n2) - Fisk \n3) - Insekt \n4) - Skalldyr\n";
do
{
cin >> valg;
switch(valg)
{
case '1':
{
Fugl fugl; fugl.les();
} break;
case '2':
{
Fisk fisk; fisk.les();
} break;
case '3':
{
Insekt insekt; insekt.les();
} break;
case '4':
{
Skalldyr skalldyr; skalldyr.les();
} break;
case 'Q': return 0;
case 'q': return 0;
default: cout << "Velg en av ovennevnte!\n";
}
} while(valg != 'Q' || valg != 'q');
return 0;
}
class Fugl:公共数据块
{
私人:
内桤木;
公众:
Fugl():DyrLuft()
{ }
void les()
{
做
{
桤木;
如果(桤木<0 | |桤木>130)
cout(130);
}
};
Main:
class Fugl : public DyrLuft
{
private:
int alder;
public:
Fugl() : DyrLuft()
{ }
void les()
{
do
{
cout << "\nSkriv inn fuglens alder: ";
cin >> alder;
if(alder < 0 || alder > 130)
cout << "\nDenne alderen virket usannsynlig, prøv igjen!\n";
} while(alder < 0 || alder > 130);
}
};
int main()
{
char valg = '\q';
cout << "Hvilken dyreart ønsker du å registrere? (Q for å avslutte)"
<< "\n1) - Fugl \n2) - Fisk \n3) - Insekt \n4) - Skalldyr\n";
do
{
cin >> valg;
switch(valg)
{
case '1':
{
Fugl fugl; fugl.les();
} break;
case '2':
{
Fisk fisk; fisk.les();
} break;
case '3':
{
Insekt insekt; insekt.les();
} break;
case '4':
{
Skalldyr skalldyr; skalldyr.les();
} break;
case 'Q': return 0;
case 'q': return 0;
default: cout << "Velg en av ovennevnte!\n";
}
} while(valg != 'Q' || valg != 'q');
return 0;
}
intmain()
{
char valg='\q';
库特瓦尔格;
开关(valg)
{
案例“1”:
{
Fugl Fugl;Fugl.les();
}中断;
案例“2”:
{
Fisk-Fisk;Fisk.les();
}中断;
案例“3”:
{
Insekt Insekt;Insekt.les();
}中断;
案例“4”:
{
Skalldyr Skalldyr;Skalldyr.les();
}中断;
案例“Q”:返回0;
案例“q”:返回0;
默认设置:cout我不知道您的案例中发生了什么,但我运行了您的代码,它对我来说运行正常。输入1,4,Q,程序按预期退出…可能是编译器或DyrLuft类问题(我只是删除了继承以使其正常工作,也删除了案例2,3,4中的行)。您有:
case '1':
{
Fugl fugl; fugl.les();
} break;
运行此操作时,创建一个Fug1对象,然后调用les()
函数。在les()中输入适当的年龄时
函数返回。由于break;
在case块之外,它实际上正在中断switch语句并进入循环的末尾。然后它循环回到循环的顶部,并使您再次输入一个选择。如果您在case块内移动break,它将正常工作。这是已更改的循环:
do
{
cout << "Hvilken dyreart ønsker du å registrere? (Q for å avslutte)"
<< "\n1) - Fugl \n2) - Fisk \n3) - Insekt \n4) - Skalldyr\n";
cin >> valg;
switch (valg)
{
case '1':
{
Fugl fugl; fugl.les();
break;
}
case '2':
{
Fisk fisk; fisk.les();
break;
}
case '3':
{
Insekt insekt; insekt.les();
break;
}
case '4':
{
Skalldyr skalldyr; skalldyr.les();
break;
}
case 'Q': return 0;
case 'q': return 0;
default: cout << "Velg en av ovennevnte!\n";
}
} while (valg != 'Q' || valg != 'q');
do
{
库特瓦尔格;
开关(valg)
{
案例“1”:
{
Fugl Fugl;Fugl.les();
打破
}
案例“2”:
{
Fisk-Fisk;Fisk.les();
打破
}
案例“3”:
{
Insekt Insekt;Insekt.les();
打破
}
案例“4”:
{
Skalldyr Skalldyr;Skalldyr.les();
打破
}
案例“Q”:返回0;
案例“q”:返回0;
默认值:cout什么是输入?“\ndene alderen virket usannsynlig,prøv igjen!\n”
在输入alder
之间打印?char valg='\q';
似乎是错误的,但这不应该是问题的原因,因为valg
很快就会被覆盖……还有,DyrLuft()
?当您声明Fugl Fugl;
时会调用此函数。如果我输入的值大于130或小于0:您可以发布终端的副本/粘贴吗?这样我们就可以知道打印了哪些消息以及提供了哪些输入。我尝试删除所有其他类,并用简单的cout-trued compute替换其余的情况r不走运地重新启动。这可能是编译器的问题吗?不,它没有跳出循环。@molbdnilo:我编辑它是为了说它跳出了switch语句。思维和手指不同步。我试着在括号内移动中断符,得到了相同的结果。@Thomas:你也在循环中移动了cout
语句吗?