大家好,我在第一个类中得到了这个变量
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/