错误C2046:非法案例
error C2046: illegal case
我一直在寻找这个问题的答案,但一直没有找到,所以我决定问。出于某种原因,我收到了一个非法的案件陈述错误。这是我的期末项目,我的老师甚至找不到错误。它以前工作得很好,但在它放入一些东西然后取出后,案件陈述就停止了。。。即使代码是一样的。。。
do //start of do while loop
{
cout << "Welcome to the Sperry Store!" << 'n'; //greeting
cout << " " << 'n';
cout << "1- Men's Authentic Original Seasonal Boat Shoe.. $79.99" << 'n';
cout << "2- Men's Authentic Original Suede Boat Shoe..... $64.99" << 'n';
cout << "3- Men's Mako 2-Eye Canoe Moc Boat Shoe......... $70.00" << 'n';
cout << "4- Men's Charter 2-Eye.......................... $90.00" << 'n';
cout << "5- Defender 2-Eye Boat Shoe..................... $65.00" << 'n';
cout << "6- Men's Embroidered Mako Short................. $34.99" << 'n'; //user friendly menu
cout << "7- Men's Figawi Jacket.......................... $99.99" << 'n';
cout << "8- Men's Mako Pant.............................. $45.99" << 'n';
cout << "9- Check Out " << 'n';
cout << "0- Start Over and Erase all current sales information. " << 'n';
cout << " " << 'n';
cout << "Please select the item you're interested in." << 'n';
cout << setprecision (5) << "Your current total is: $" << total << 'n'; //displays running total
cin >> x; //allows entered value to take user to disired case statement
switch (x) //creates switch for the case statements
{
case '1':
cout << "How many pairs would you like?" << 'n';
cin >> amount;
sub_total1 = (amount * seasonal);
total = sub_total1 + total; //case statements for getting the mula
cout << "Your current total is: $" << total << 'n';
break; //break statemets required to end case
case '2':
cout << "How many pairs would you like?" << 'n';
cin >> amount;
sub_total2 = (amount * original);
total = sub_total2 + total;
break;
case '3':
cout << "How many pairs would you like?" << 'n';
cin >> amount;
sub_total3 = (amount * canoe);
total = sub_total3 + total;
break;
case '4':
cout << "How many pairs would you like?" << 'n';
cin >> amount;
sub_total4 = (amount * charter);
total = sub_total4 + total;
break;
case '5':
cout << "How many pairs would you like?" << 'n';
cin >> amount;
sub_total5 = (amount * defender);
total = sub_total5 + total;
break;
case '6':
cout << "How many pairs would you like?" << 'n';
cin >> amount;
sub_total6 = (amount * embroidered);
total = sub_total6 + total;
break;
case '7':
cout << "How jackets would you like?" << 'n';
cin >> amount;
sub_total7 = (amount * figawi);
total = sub_total7 + total;
break;
case '8':
cout << "How many pairs would you like?" << 'n';
cin >> amount;
sub_total8 = (amount * mako_pant);
total = sub_total8 + total;
break;
case '9': //check out case statement, lets the function end
cout << "Welcome to the check out, please finalize your order." << 'n';
tax = total * .0875; //calculate tax
cout << setprecision (5) << "Your total plus tax is: $" << (total = total + tax) << 'n'; //display total + tax
cout << "Would you like your order to be shipped? (Type 1 for yes and 2 for no)" << 'n'; //allows choice for shipping or not
cin >> shipping;
if (shipping == '1') //adds a shipping charge
{
cout << "There is a flat shipping rate of $9.99" << 'n';
cout << setprecision (5) << "Your new total is: $" << (total + 9.99) << 'n';
cout << "Would you like a Receipt? (Press 1 for yes and 2 for no)" << 'n';
cin >> receipt;
if (receipt == '1')
{
cout << " " << "Your Receipt" << 'n';
cout << "Men's Authentic Original Seasonal Boat Shoe.."<< sub_total1 <<'n';
cout << "Men's Authentic Original Suede Boat Shoe....."<< sub_total2 <<'n';
cout << "Men's Mako 2-Eye Canoe Moc Boat Shoe........."<< sub_total3 <<'n';
cout << "Men's Charter 2-Eye.........................."<< sub_total4 <<'n'; //receipit
cout << "Defender 2-Eye Boat Shoe....................."<< sub_total5 <<'n';
cout << "Men's Embroidered Mako Short................."<< sub_total6 <<'n';
cout << "Men's Figawi Jacket.........................."<< sub_total7 <<'n';
cout << "Men's Mako Pant.............................."<< sub_total8 <<'n';
cout << "If you have any questions please call (781)-452-2079."<< 'n';
cout << "Thank you for shopping at The Sperry Store!" << 'n';
}
if (receipt == '2')
{
cout << "If you have any questions please call (781)-452-2079."<< 'n';
cout << "Thank you for shopping at The Sperry Store!" << 'n';
}
}
if (shipping == '2') //checks out without shipping
{
cout << " " << "Your Receipt" << 'n';
cout << "Men's Authentic Original Seasonal Boat Shoe.."<< sub_total1 <<'n';
cout << "Men's Authentic Original Suede Boat Shoe....."<< sub_total2 <<'n';
cout << "Men's Mako 2-Eye Canoe Moc Boat Shoe........."<< sub_total3 <<'n';
cout << "Men's Charter 2-Eye.........................."<< sub_total4 <<'n'; //receipit
cout << "Defender 2-Eye Boat Shoe....................."<< sub_total5 <<'n';
cout << "Men's Embroidered Mako Short................."<< sub_total6 <<'n';
cout << "Men's Figawi Jacket.........................."<< sub_total7 <<'n';
cout << "Men's Mako Pant.............................."<< sub_total8 <<'n';
cout << "If you have any questions please call (781)-452-2079."<< 'n';
cout << "Thank you for shopping at The Sperry Store!" << 'n';
}
if (receipt == '2')
{
cout << "If you have any questions please call (781)-452-2079."<< 'n';
cout << "Thank you for shopping at The Sperry Store!" << 'n';
}
no_ship(); //declares function
}
break;
case '0': //restart order statement
cout << "Are you sure you would like to erase all data (This choice is non-reversable)?" << 'n';
cout << "Press 1 for yes and 2 for no" << 'n';
cin >> erase;
if (erase == '1') //erases the data
{
shipping = 0;
erase = 0;
amount = 0;
total = 0;
tax = 0;
x = 0;
sub_total1 = 0;
sub_total2 = 0;
sub_total3 = 0;
sub_total4 = 0;
sub_total5 = 0;
sub_total6 = 0;
sub_total7 = 0;
sub_total8 = 0;
}
if (erase == '2') //returns to menu
{
cout << setprecision (4) << "Your current total is: $ " << total << 'n'; //returns user to the menu without erasing order
}
break;
system("command/ccls");
}
while (x != '9'); //end of while loop (when x does not = 9)
return 0;
}
void no_ship() // displays the no_ship function data
{
cout << "Your item will be ready in 1-2 business days." << 'n';
cout << "If you have any questions please call (781)-452-2079."<< 'n';
cout << "Thank you for shopping at The Sperry Store!" << 'n';
}
我为这么长的代码道歉,但我不知道错误在哪里。以下是编译器中的错误:
Compiling...
final project.cpp
H:Comp. Progfinal project.cpp(232) : error C2046: illegal case
Error executing cl.exe.
final project.exe - 1 error(s), 0 warning(s)
您有太多的大括号,特别是break; case '0':
前面的那个大括号。
这是在结束你的switch
语句,这就是为什么它抱怨裸露的case
。
话虽如此,删除这个无关的大括号将导致另一个问题,因为那时根本无法关闭switch语句。在case '0'
块之后,立即关闭do
循环,而不首先关闭switch
。你需要在那里再放一个}
。
我可以建议您重构代码,使其更易于阅读吗?在我看来,case
块中应该有少量的行(例如,10)。除此之外,或者如果有很多缩进级别,它应该只调用一个函数来完成繁重的工作。
这可能会让你的错误更加明显,因为如果它没有完全避免它,它至少会把它移到case '9'
函数中。
case '9'
:中有一个额外的右大括号
if (shipping == '2') //checks out without shipping
{
// skipped
} // <-------
if (receipt == '2')
{
cout << "If you have any questions please call (781)-452-2079."<< 'n';
cout << "Thank you for shopping at The Sperry Store!" << 'n';
}
no_ship(); //declares function
}
您应该真正处理缩进,因为它可以提高您和其他人的可读性。您的问题是case '0':
在switch
语句之外(如果有适当的缩进,则会跳到您身上)。
相关文章:
- 无法编译 rtmidi 测试 cmidiin.cpp 文件, 非法指令
- 编写代码时C++出现错误:错误 1 错误 C2601:'circle':本地函数定义是非法的
- C 和 C++ 中开关语句的案例标签的常量值,但显示不同的行为
- 为什么这个案例陈述需要一个"if else"而不仅仅是一个"if"?
- C++中的移动分配出现问题.非法指令: 4.
- while 循环 c++ 中的非法指令
- C++ switch 语句:对案例进行分组,并针对每个案例给出特定的说明
- 任意大小的 constexpr 数组是否可以用作 switch 语句中的案例?
- Python & C-C++ 扩展模块案例段故障
- 使用 ISdigit 通知任何检测到的非法字符
- 非法,左操作数具有类型 'DWORD [29]'
- 来自 VS C++ 在 Windows 上的非法指令
- WinLamb 错误:成员初始化非法
- 与 SDL2(以及类似案例)一起构建SDL2_image
- "class":非法使用此类型作为表达式 如何解决?
- AVX512 非法指令
- 在Visual Studio中查找非法内存访问
- 自定义分配器,包括放置新案例
- 为什么基于范围类型的大括号上循环init列表是非法的c++
- 错误C2046:非法案例