2014-03-26 71 views
0

我有一個問題:爲什麼我的int不能正確保存? (java)

我正在使用一個輸入(字符串),我想保存到一個int。我想在另一個類中使用該int,但在用戶輸入後,int仍然爲0。代碼如下。我想在另一個類中使用int fsize。我想與getFsize()一起使用它,但如果我在其他課程中使用它,它會說fsize = 0

public class MineSweeper { 
    private boolean gameOn = true; 
    int fsize; 
    int bpercent; 
    ConsoleIO io = new ConsoleIO(); 

    // start getters and setters 
    public int getFsize() { 
     return fsize; 
    } 

    public void setFsize(int fsize) { 
     this.fsize = fsize; 
    } 

    public int getBpercent() { 
     return bpercent; 
    } 

    public void setBpercent(int bpercent) { 
     this.bpercent = bpercent; 
    } 

    // end getters and setters 
    // while (gameOn = true) { 

    public void startGame() { 
     io.writeOutput("Welkom bij het spelletje Mijnenveger!"); 
     io.writeOutput("Probeer alle mijnen te vinden in het mijnen veld."); 
    } 

    public void fieldSize() { 
     io.writeOutput("Geef de grootte van het veld (5-20):"); 
     // read the input from the console 
     String input1 = io.readInput(); 
     if (input1.matches("[0-9]+")) { 
      this.fsize = Integer.parseInt(input1); 
      if (this.fsize > 20 || this.fsize < 5) { 
       System.out 
         .println("*** De grootte moet tussen 5 en 20 liggen! ***"); 
       fieldSize(); 
      } else { 
       System.out.println(this.fsize); 
       } 
     } else { 
      System.out.println("Vul wel een enkel getal in tussen 5 en 20!"); 
      fieldSize(); 
     } 
    } 
+0

你稱這個類和它的方法? – Salah

+0

我稱之爲主類: \t MineSweeper sweep = new MineSweeper(); \t \t sweep.startGame(); \t \t sweep.fieldSize(); \t \t sweep.bombPercentage(); \t \t Field field = new Field(); \t \t field.printField(); – Olivier

+0

我將它改爲static int fsize;它的工作!非常感謝! :D – Olivier

回答

0

想要Integer.valueOf(input1)代替Integer.parseInt(input1)

+0

nope,不起作用:(如果我將其更改爲靜態int fsize;它的工作原理.. – Olivier

+0

它會在這種情況下會產生什麼區別? – MZimmerman6

+0

我看不出如何將fsize更改爲靜態會有所幫助,發佈表明會有多個實例,你確定你明白什麼是將該字段改爲靜態方法嗎?你可能是從另一個實例設置字段的值,靜態方便地修復它。碼。 – rpg711

0

您可以像使用整數基本類型一樣使用Integer對象。這是因爲Java的Autoboxing,它將int無縫地轉換爲Integers。

你可以只說somevalue = input1;input1 = somevalue;而不需要轉換或調用其他方法。

-1

您是否使用MineSweeper類的相同實例?當您聲明屬性fsize時,默認情況下它的值爲0.如果您沒有調用方法fieldSize()爲您啓動的每個實例分配輸入值到屬性fsize,它將始終爲0

相關問題