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

标签 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); }
}

现在的问题是信用变量根本没有增加,我不知道为什么看起来一切都很好,或者也许我错过了一些东西?输入顺利意味着它检查了正确的值,然后它说信用已更新,但事实并非如此,我不知道为什么会发生这种情况

注意:我尝试将此变量设为非静态变量,并将所有方法重命名为非静态,但似乎是同一件事,同样的问题

最佳答案

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

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

   creditl = creditl + credits;

(无论如何,您应该重新审视您的设计。)

关于java - 如何从另一个类的静态方法更改静态变量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21796511/

相关文章:

Java 基于时间的映射/缓存,带有过期键

java - 为什么 CTRL+C(用 Awt.Robot 模拟)不能正常工作?

c - 为什么使用存储类说明符来确定两个独立的属性?

c - 解释一个c程序的输出

C++ : initialize static member large array

java - 使用 BasicDataSource 通过 SSL 安全连接到 mysql

java - 集合的依赖注入(inject)

java - 如何从spinner android中选择值然后插入到mysql?

c# - 我应该使用静态字段并将它们互锁在一起吗?

java - 如何从Java中的main调用非静态方法?