大家好我在我的第一堂课中得到了这个变量
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并将所有方法重命名为非静态但看起来它是同样的东西,同样的问题
答案 0 :(得分:0)
您没有在代码中的任何位置设置credit
类变量。你有另一个名为creditl
的局部变量,也许这是一个错字,是你问题的一部分。
具体来说,这一行可能是问题所在:
creditl = creditl + credits;
(无论如何,你应该重温你的设计。)