Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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 Can';t调用字符串,因为它';是由用户初始化的吗?_Java_String_Input - Fatal编程技术网

Java Can';t调用字符串,因为它';是由用户初始化的吗?

Java Can';t调用字符串,因为它';是由用户初始化的吗?,java,string,input,Java,String,Input,我正在用java制作一种文本冒险游戏,基本上我有一个名为WeaponChoice的int。我让用户输入一个介于1和3之间的数字 然后我有一个if语句,它基本上是这样的 if(WeaponChoice == 1){ Weapon = "Sword" } 问题是,当我稍后尝试打印一行带有武器变量的代码时(因为我不想为每件武器都做一个if语句),它会声明变量尚未初始化 任何帮助都将不胜感激 编辑 System.out.println(“你进入前门,“+武器+”准备就绪。”); 错误信息是“局

我正在用java制作一种文本冒险游戏,基本上我有一个名为WeaponChoice的int。我让用户输入一个介于1和3之间的数字

然后我有一个if语句,它基本上是这样的

if(WeaponChoice == 1){
    Weapon = "Sword"
}
问题是,当我稍后尝试打印一行带有武器变量的代码时(因为我不想为每件武器都做一个if语句),它会声明变量尚未初始化

任何帮助都将不胜感激

编辑 System.out.println(“你进入前门,“+武器+”准备就绪。”); 错误信息是“局部变量可能尚未初始化。”

决心
通过在else语句中添加默认值来解决此问题。

您的解决方案应该包括将WeaponChoice声明为数组而不是字符串

String[] WeaponChoice = new String[20];
然后


现在我理解了实际的错误,所以更改了我的响应

如果在代码中至少有一条执行路径会导致
武器
从未被初始化,Java编译器将给出此错误。常见的原因是if/else-if语句没有提供默认值的final-else,或者switch语句没有默认大小写以确保赋值

例如:

String Weapon;
if( choice == 1 ) {
  Weapon = "Sword";
} 
else
if( choice == 2 ) {
  Weapon = "Bow";
}
System.out.println(Weapon); 
就编译器而言,您的代码可能可以执行,并且选项既不是1也不是2,因此不会初始化(因此错误消息中会出现“may”一词)。修复方法是执行以下操作之一:

  • 指定一个默认值,例如
    String-wearm=“剑”
  • 在末尾添加一个else以指定默认值,例如

    else{
    武器=“无武器”;
    }


  • 您收到的实际错误消息是什么?您正在运行的生成错误的代码是什么?System.out.println(“您进入前门,“+武器+”准备就绪。”);错误消息是“局部变量可能尚未初始化”。请不要添加内容作为注释;编辑您的问题以包含其他信息。和4=?,和42=?,和1000000=?你不能假设你的用户会给你很好的输入。武器定义在哪里?它应该默认为某个值。也许在声明字符串时,您可以指定一个值或将其设置为至少为空。弦武器=”;或类似字符串武器=“未选择武器”;我最初尝试过这个,它更有意义,但用户如何输入呢?现在我把它作为输入;对武器的选择本质上和你现在做的一样。用户可以从一个下拉列表中进行选择,该下拉列表将发送值1、2、3等。。。一旦他们做出选择,您就可以选择整数了。当您稍后回拨时,您只需显示武器选项[已选择]。
    String Weapon;
    if( choice == 1 ) {
      Weapon = "Sword";
    } 
    else
    if( choice == 2 ) {
      Weapon = "Bow";
    }
    System.out.println(Weapon);