Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java试图使用switch语句创建一个对象,该语句根据用户输入具有不同的参数_Java_Switch Statement_Instance - Fatal编程技术网

Java试图使用switch语句创建一个对象,该语句根据用户输入具有不同的参数

Java试图使用switch语句创建一个对象,该语句根据用户输入具有不同的参数,java,switch-statement,instance,Java,Switch Statement,Instance,因此,我使用Java编写了一个文本冒险RPG,我想使用一个switch语句,它将接受用户的下一个输入,并根据用户的输入使用不同的参数创建我的类的实例ftawarm 例如,如果用户输入1,我想创建一个名为武器的FTA武器实例,参数为1、6、1、5、8、75 但是如果用户改为输入2,我想创建一个FTAFarm的实例,仍然命名为武器,参数为2,24,3,7,15,65 但是,我得到了这个错误: 错误:可变武器已在方法mainString[]中定义 在第一次尝试创建对象实例之后的所有尝试中,此错误出现4

因此,我使用Java编写了一个文本冒险RPG,我想使用一个switch语句,它将接受用户的下一个输入,并根据用户的输入使用不同的参数创建我的类的实例ftawarm

例如,如果用户输入1,我想创建一个名为武器的FTA武器实例,参数为1、6、1、5、8、75

但是如果用户改为输入2,我想创建一个FTAFarm的实例,仍然命名为武器,参数为2,24,3,7,15,65

但是,我得到了这个错误:

错误:可变武器已在方法mainString[]中定义

在第一次尝试创建对象实例之后的所有尝试中,此错误出现4次

下面是给我这个问题的代码:

switch(kb.next())
           {
              case "1":
                 System.out.println("\n\n*.44 Magnum Revolver added to inventory*");
                 FTAWeapon weapon = new FTAWeapon(1, 6, 1, 5, 8, .75);
                 break;

              case "2":
                 System.out.println("\n\n*Assault Rifle added to inventory*");
                 FTAWeapon weapon = new FTAWeapon(2, 24, 3, 7, 15, .65);
                 break;

              case "3":
                 System.out.println("\n\n*Laser Pistol added to inventory*");
                 FTAWeapon weapon = new FTAWeapon(3, 30, 1, 2, 6, .85);
                 break;

              case "4":
                 System.out.println("\n\n*Caravan Shotgun added to inventory*");
                 FTAWeapon weapon = new FTAWeapon(4, 14, 7, 3, 20, .50);
                 break;

              case "5":
                 System.out.println("\n\n*Plasma Rifle added to inventory*");
                 FTAWeapon weapon = new FTAWeapon(5, 24, 1, 5, 10, .70);
                 break;
           }

每个case子句中的变量范围对应于整个switch语句。

在switch语句上方声明变量,就可以了。确保在教科书中查找范围。
FTAWeapon weapon = null; // Declaration outside the switch statement
switch(kb.next())
{
          case "1":
             System.out.println("\n\n*.44 Magnum Revolver added to inventory*");
             weapon = new FTAWeapon(1, 6, 1, 5, 8, .75);
             break;

          case "2":
             System.out.println("\n\n*Assault Rifle added to inventory*");
             weapon = new FTAWeapon(2, 24, 3, 7, 15, .65);
             break;

          case "3":
             System.out.println("\n\n*Laser Pistol added to inventory*");
             weapon = new FTAWeapon(3, 30, 1, 2, 6, .85);
             break;

          case "4":
             System.out.println("\n\n*Caravan Shotgun added to inventory*");
             weapon = new FTAWeapon(4, 14, 7, 3, 20, .50);
             break;

          case "5":
             System.out.println("\n\n*Plasma Rifle added to inventory*");
             weapon = new FTAWeapon(5, 24, 1, 5, 10, .70);
             break;
}