在Java中使用switch分配附加值

在Java中使用switch分配附加值,java,switch-statement,Java,Switch Statement,我是java新手,正在尝试编写一个开关。根据猜测值,将授予不同的奖励。我做错了,因为编译器说变量已经定义了。但我怎么能不给它下定义,让开关知道要寻找什么样的价值来给予什么样的奖励呢 if (guess == randomNom) { System.out.println(" You Win! "); player.setEarning(player.getEarn() + guess * 10); int reward = guess; String prize

我是java新手,正在尝试编写一个开关。根据猜测值,将授予不同的奖励。我做错了,因为编译器说变量已经定义了。但我怎么能不给它下定义,让开关知道要寻找什么样的价值来给予什么样的奖励呢

if (guess == randomNom)
{
    System.out.println(" You Win! ");
    player.setEarning(player.getEarn() + guess * 10);

    int reward = guess;
    String prize = "";

    switch(reward)
        {
    case 1: int reward = 10;
            String prize = " Prize #1";
    break;

    case 2: int reward = 20 ;
        String prize = "Prize #2";
    break;

    case 3: int reward = 30; 
        String prize = "Prize #3";
    break;

    ...
}

如果编译器说“好”,您尝试创建“另一个具有相同名称的变量”,则会出现问题。删除重复的声明

if (guess == randomNom)
{
    System.out.println(" You Win! ");
    player.setEarning(player.getEarn() + guess * 10);

    int reward = guess;
    String prize = "";

    switch(reward)
    {
     case 1: reward = 10;
        prize = " Prize #1";
        break;

     case 2: reward = 20 ;
       prize = "Prize #2";
       break;

    case 3: reward = 30; 
       prize = "Prize #3";
       break;

...     
     }

问题就在这些方面

String prize = "";
String prize = " Prize #1";
String prize = "Prize #2";
当您以上述方式(即数据类型后跟变量名)分配变量时,编译器假定您要定义一个具有某个值的新变量

相反,您应该定义它一次

String prize = ""; // Data type followed by variable name is to define new variable
并随后更新

prize = " Prize #1"; //just the variable name with assignment operator to assign new value to existing variable.
prize = " Prize #2";

只需删除所有字符串prize=语句前面的字符串,除了第一个和第二个相同的带有int和reward的字符串。一个变量只声明一次。之后,你就用它。投票以打字错误/不重复的方式结束。参考这一点,你可能想从一开始就开始。而且,你应该意识到所有这些int奖励。。。在你的开关中,声明一个新的变量,这个变量只在这个例子中可见。相反,解释他做错了什么背后的逻辑以及正确的方法是什么:-正确的解释:-