2014-03-26 41 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

相关问题