我对一般以及本网站的编码都很陌生,所以对任何帮助表示赞赏!
我生成的这个简短代码不会运行,因为变量str不会初始化。 它似乎与其他几个按预期运行的变量相同。
我的问题是为什么会发生这种情况以及如何解决这个问题。
这是代码
package firstgameattempt1;
import java.util.Scanner;
public class CreateChar {
public static void main (String Args[]){
System.out.println( "please enter your Characters name");
Scanner in = new Scanner (System.in);
String Cname = in.next();
System.out.println("so your name is ");
System.out.println(Cname);
System.out.println("thats the dumbest thing ive ever heard");
int str;
int intelligence;
int speed;
int hp;
int maxhp;
System.out.println("enter 1 if you are a warrior, 2 if you are a mage, or 3 if you are a thief ");
int Cclass = in.nextInt();
if (Cclass == 1 )
str = 10;
intelligence = 5;
speed = 7;
hp= 100;
maxhp = 100;
System.out.println ("your strength is");
//here is the problem
System.out.println (str);
//here is the problem
System.out.println ("your intelligence is");
System.out.println (intelligence);
System.out.println ("your speed is");
System.out.println (speed);
System.out.println ("you have ");
System.out.println (hp);
System.out.println ("hitpoints");
}
}
答案 0 :(得分:1)
这个问题正在发生
int str;
在创建时未初始化(例如设置为= 0)。
您确实有代码将值设置为10
,但只有当if(Cclass==1)
语句的条件为true
时才会发生这种情况,因此如果该语句为false
,{ {1}}将保持未初始化状态。无论是否str
,都要确保它始终具有值。
答案 1 :(得分:0)
从缩进中我假设您希望所有赋值都是if语句的一部分。把它放在一个块里面,如下:
if (Cclass == 1 ) {
str = 10;
intelligence = 5;
speed = 7;
hp= 100;
maxhp = 100;
}
但是,您仍然会收到有关变量可能尚未初始化的警告,这是正确的。看看代码。无论以前发生过什么,你都在使用(打印)变量,但初始化是有条件的。你可以这样做:
if (Cclass == 1 ) {
str = 10;
...
} else {
str = 0;
...
}
另一种方法是在之前初始化它们:
int str = 0;
...
if (Cclass == 1 ) {
str = 10;
...
}
可能这些都不适合你的情况,但关键是Java不允许使用未初始化的变量,并且在编译时检查它。
我不知道您是否尝试过编写Python代码,但您的错误对于Python代码来说非常典型。在Java中,缩进对语法没有任何作用。在Python中,您使用缩进来指定块。在Java和许多其他语言中,您使用{}代替。