【发布时间】:2013-06-17 23:33:45
【问题描述】:
我正在编写一个剪刀石头布程序,但这次计算机选择石头的时间有一半,剪刀的时间有三分之一,纸的时间只有六分之一。我这样做的方法是列举了六个可能的计算机选择值:
enum choicec {rock1, rock2, rock3, scissors1, scissors2, paper};
choicec computer;
但是,在计算机做出选择之后,我必须将这些枚举值转换为石头、纸或剪刀。我使用 switch-case 语句做到了这一点:
switch(computer) {
case rock1 || rock2 || rock3:
c = 1;
break;
case scissors1 || scissors2: //ERROR!
c = 3;
break;
case paper:
c = 2;
break;
}
一是石头,二是纸,三是剪刀。但是,在我将错误写为注释的那一行,它给了我这个错误:[Error] duplicate case value。
我不知道为什么。 有什么想法吗?
【问题讨论】:
-
rock1 || rock2 || rock3计算结果为真 (1),如scissors1 || scissors2。您需要单独的标签,但可以使用直通标签,case rock1: case rock2: case rock3: c = 1; break;。 -
您不能在
case语句中使用||。对不起:( -
选择像
{ rock, scissors, paper }这样的枚举,然后简单地构建随机数生成器以提供必要的统计百分位数不是更好的设计吗? -
谢谢大家!这真的很有帮助。现在程序可以运行了。
标签: c++ switch-statement dev-c++