2012-02-11 69 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標識符超出範圍在您嘗試打印它的位置。

不幸的是,聲明或有問題的打印代碼都不在您的代碼片段中,因此無法確切地說出問題所在以及如何解決問題。即使猜測問題的可能性也是徒勞的,因爲(一般來說......即不看你的代碼)有太多的可能性。

如果您想要更好的診斷,請至少包含從聲明到編寫錯誤代碼的所有內容。