如何从另一个类的静态方法更改静态变量的值

时间:2014-02-15 10:51:54

标签: java static

大家好我在我的第一堂课中得到了这个变量

public static double credit;

在我得到的第一堂课的构造函数中

credit=0.0;

然后我得到了这个监听器代码,在用户添加资金后向我显示图形窗口的值

Catalogo.addCredit(credit);
creditLabel.setText("Credito: " + getCredit()+"€"); 

使用这两个静态方法,这个值为返回值(在第一个类中)

public static double getCredit() {
      return credit; }

并且为了增加资金,我使用另一个类

public static void addCredit(double creditl) {

  JFrame frame = new JFrame();
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
  String cred = JOptionPane.showInputDialog(frame, "Inserisci l'importo da aggiungere:");

  if (cred == null) {
      return; }

  if ((cred.matches("[0-9]*\\.[0-9]+")) || (cred.matches("[0-9]+"))) { //checks if the string is a valid double value or an int value
      double credits = (double) Double.parseDouble(cred); //conversion into double
      if (credits >= 0.0) {
          JOptionPane.showMessageDialog(frame, "Credito aggiornato con successo");
          creditl = creditl + credits;} }

  if (!(cred.matches("[0-9]+")) && !(cred.matches("[0-9]*\\.[0-9]+"))) { //checks if the user didn't insert a correct double or int
      JOptionPane.showMessageDialog(frame, "Importo inserito errato");
      addCredit(creditl); }
}

现在的问题是信用变量根本没有增加,我不知道为什么一切都好,或者我错过了什么?输入结果是因为它检查了正确的值,然后它表示信用已经更新,但它不是,我不知道为什么会发生这种情况

注意:我试图使这个变量成为一个非静态var并将所有方法重命名为非静态但看起来它是同样的东西,同样的问题

1 个答案:

答案 0 :(得分:0)

您没有在代码中的任何位置设置credit类变量。你有另一个名为creditl的局部变量,也许这是一个错字,是你问题的一部分。

具体来说,这一行可能是问题所在:

   creditl = creditl + credits;

(无论如何,你应该重温你的设计。)