2012-02-11 67 views
-1

我正在构建RPG角色生成器,并且对角色的属性有半困难时间。我有问题,原因是这样的:如何在Java中更改变量的值?

 int base = 10; 

     int iStrengthStatPoints = scan.nextInt(); 

     int iStrength = (base +iStrengthStatPoints); 

它不能编译,因为我后来输出在我的代码变量“iStrength”,它说无法找到象征。我意识到这是由于iStrength被设置为base + iStrengthStatPoints的值。所以我想知道是否有一种方法可以为iStrengthStatPoints分配一个初始值,然后可以选择在稍后输入一个新值。

我的想法是这样的:

 int iStrengthStatPoints = 0; 

     int iStrengthStatPoints = scan.nextInt(); 

这将有基值0,但后来我可以输入一个高于一切的价值。这可能吗?如果不是,有没有办法做类似的事情?

回答

2

如果编译器说,它无法找到符号,您正试图将iStrength列印出其范围。很可能你在一个方法中声明变量,给它的方法局部范围,然后尝试以后用另一种方法打印它。即使在类的构造函数中声明的变量也是如此。

+0

我有一个变量iStrength在switch语句的一个case中声明和初始化,并在另一个case中打印出来。尽管如此,它的方法相同。它会在不同的情况下成为一个问题吗? – user1174711 2012-02-11 03:30:48

+0

如上所述,没有。一般而言,交换机中的每个案例并不构成自己的范围。为了正确诊断,最好提供声明的上下文(只比你已经完成的要多一点)以及你从编译器中得到的错误 – akf 2012-02-11 03:38:07

+0

我有两个switch语句,变量声明在一个在另一个打印。 在我的第二个switch语句的情况1中,我有: int iStrengthStatPoints = 0; iStrengthStatPoints = scan.nextInt(); int iStrength =(base + iStrengthStatPoints); 在我的第一个switch语句的情况2中,我有: System.out.println(“Your strength:”+ iStrength); 错误是“找不到符号iStrength”。是否有两种不同的开关语句会成为问题? – user1174711 2012-02-11 03:53:59

0

您只需要声明变量(使用int关键字或其他类型名称)一次;之后,您可以多次指定(更改其值)。所以,这是好的:

 int iStrengthStatPoints = 0; 

,你只需要改变这一点:

 int iStrengthStatPoints = scan.nextInt(); 

这样:

 iStrengthStatPoints = scan.nextInt(); 
+0

我试过这个,但它工作正常,但我无法打印iStrength,但它不再给我分配它的问题。 – user1174711 2012-02-11 03:32:22

0

问题不在于更新iStrength的赋值语句。相反,它与声明iStrength的范围一致。更准确地说,iStrength标识符超出范围在您尝试打印它的位置。

不幸的是,声明或有问题的打印代码都不在您的代码片段中,因此无法确切地说出问题所在以及如何解决问题。即使猜测问题的可能性也是徒劳的,因为(一般来说......即不看你的代码)有太多的可能性。

如果您想要更好的诊断,请至少包含从声明到编写错误代码的所有内容。