【发布时间】:2021-11-04 15:51:09
【问题描述】:
所以我的总体目标是制作一个程序来显示与用户输入的波长数相关的颜色(400 到 445 是紫色等)。输入需要在 400 到 700 之间,并让用户知道输入是高还是低。我还需要实现一个全局计数器变量,它将计数并显示在用户输入和颜色范围之间执行的比较量(对于它通过的每个 else 语句,递增 1)。这是我到目前为止所拥有的。 代码:
#include <iostream>
using namespace std;
int g_counter;
int main()
{
g_counter = 0;
int userinput;
cout<< "please enter wavelength between 400 and 700: "<< endl;
cin>>userinput;
++g_counter;
if (userinput < 400){
cout << "Wavelength to small, try again"<< endl;
cout << "You evauluated this many conditions: "<< g_counter << endl;
}
++g_counter;
else (userinput >= 400 && userinput <=445){
cout<< "Your wavelength corresponds to the color violet"<< endl;
cout << "You evauluated this many conditions: "<< g_counter << endl;
}
++g_counter;
else (userinput > 445 && userinput <= 475){
cout<< "Your wavelength corresponds to the color blue"<< endl;
cout << "You evauluated this many conditions: "<< g_counter << endl;
}
++g_counter;
else (userinput > 475 && userinput <= 510){
cout<< "Your wavelength corresponds to the color green"<< endl;
cout << "You evauluated this many conditions: "<< g_counter << endl;
}
++g_counter;
else (userinput > 510 && userinput <= 570){
cout<< "Your wavelength corresponds to the color Yellow"<< endl;
cout << "You evauluated this many conditions: "<< g_counter << endl;
}
++g_counter;
else (userinput > 570 && userinput <= 590){
cout<< "Your wavelength corresponds to the color Orange"<< endl;
cout << "You evauluated this many conditions: "<< g_counter << endl;
}
++g_counter;
else ( userinput > 590 && userinput <= 700){
cout<< "Your wavelength corresponds to the color red"<< endl;
cout << "You evauluated this many conditions: "<< g_counter << endl;
}
++g_counter;
else ( userinput > 700 ){
cout<< "wavelength to large, try again"<< endl;
cout << "You evauluated this many conditions: "<< g_counter << endl;
}
return 0;
}
我的问题是我无法理解编译时遇到的错误。 错误:
Homework2.cpp: In function ‘int main()’:
Homework2.cpp:19:1: error: ‘else’ without a previous ‘if’
else (num >= 400 && num <=445){
^
Homework2.cpp:19:31: error: expected ‘;’ before ‘{’ token
else (num >= 400 && num <=445){
^
Homework2.cpp:26:1: error: ‘else’ without a previous ‘if’
else (num > 445 && num <= 475){
^
Homework2.cpp:26:31: error: expected ‘;’ before ‘{’ token
else (num > 445 && num <= 475){
^
Homework2.cpp:32:1: error: ‘else’ without a previous ‘if’
else (num > 475 && num <= 510){
^
Homework2.cpp:32:31: error: expected ‘;’ before ‘{’ token
else (num > 475 && num <= 510){
^
Homework2.cpp:38:1: error: ‘else’ without a previous ‘if’
else (num > 510 && num <= 570){
^
Homework2.cpp:38:31: error: expected ‘;’ before ‘{’ token
else (num > 510 && num <= 570){
^
Homework2.cpp:44:1: error: ‘else’ without a previous ‘if’
else (num > 570 && num <= 590){
^
Homework2.cpp:44:31: error: expected ‘;’ before ‘{’ token
else (num > 570 && num <= 590){
^
Homework2.cpp:50:1: error: ‘else’ without a previous ‘if’
else ( num > 590 && num <= 700){
^
Homework2.cpp:50:32: error: expected ‘;’ before ‘{’ token
else ( num > 590 && num <= 700){
^
Homework2.cpp:56:1: error: ‘else’ without a previous ‘if’
else ( num > 700 ){
^
Homework2.cpp:56:19: error: expected ‘;’ before ‘{’ token
else ( num > 700 ){
^
例如,错误“Homework2.cpp:19:1: error: ‘else’ without a previous ‘if’”对我来说没有意义,因为之前存在 if。此外,即使它实际上检查了更多比较,全局计数器(当程序在我搞砸之前工作时)仍然给出 1 的答案。任何关于这些问题的指示都会很棒。
【问题讨论】:
-
您是否希望所有 8 行
++g_counter;每次都执行? -
yes Drew,如果输入大于 else 语句的范围,计数器应该增加 1 以表示比较完成。
-
您似乎对if statements 的语法感到困惑。
else是 if 语句的一部分,而不是单独的构造。if和else之间只能有一个语句,通常是由{}包围的复合语句。 -
由于每个
else条件都会检查与前一个条件相反的条件,看起来您可以将所有else替换为if并且应该没问题。 -
感谢@FrançoisAndrieux 修复了它。
标签: c++ if-statement nested counter global