gpt4 book ai didi

java - 如何使变量可以被其他方法使用

转载 作者:行者123 更新时间:2023-12-01 20:51:53 26 4
gpt4 key购买 nike

我正在尝试制作一个程序来计算今天和出生日之间的天数(嗯,我还在学习,所以这个想法不是很聪明)。该程序获取用户从键盘写入的日期并计算随后输出的差值。我制作了一个 getdifference 方法来计算它。

问题是,我需要一个表示日、月和年的变量(由用户输入),稍后由 getdifference 方法使用。我知道,方法内的变量是本地的,所以 Eclipse 告诉我将它们转换为静态变量 - 我想这不是最好的主意,因为它们(至少我这么认为)作为默认值启动,答案总是 0 .

问题是 - 如何创建一个可能不是静态且可以在方法中使用的值?我尝试过 setter 、 getter ,但我认为这可能是一种更简单的方法,只是找不到它。我不久前就开始编码了,所以任何指示和提示将不胜感激,因为说实话我不认识任何 java 开发人员,所以不能只是给别人我的代码来检查。

public class HowManyDaysTest {


static String yearinStr;
static String monthinStr;
static String dayinStr;
static String strLong;
static long daysBetween;
Temporal birthday;

public void getDifference() {
LocalDate today = LocalDate.now();
try{

birthday = LocalDate.of(Integer.valueOf(dayinStr),Integer.valueOf(monthinStr), Integer.valueOf(yearinStr));
}
catch(NumberFormatException ex) {
System.out.println("Error");
}
try{
daysBetween = ChronoUnit.DAYS.between(birthday, today); }

catch(NullPointerException e) {
System.out.println("Error"); }
strLong = Long.toString(daysBetween);
System.out.println(strLong);
System.out.println(daysBetween);
System.out.println(birthday);
}


public HowManyDaysTest() {

JFrame frame= new JFrame("How many days?");
JLabel question= new JLabel("Please enter your date of birth");
JTextField d = new JTextField("DD");
JTextField m = new JTextField("MM");
JTextField y = new JTextField("YYYY");
JLabel ans= new JLabel();
frame.setVisible(true);
frame.setSize(500, 500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(question,BorderLayout.NORTH);
frame.add(d,BorderLayout.WEST);
frame.add(m,BorderLayout.CENTER);
frame.add(y,BorderLayout.EAST);
frame.add(ans,BorderLayout.SOUTH);

d.addFocusListener(new FocusListener() {

@Override
public void focusGained(FocusEvent arg0) {
d.setText("");

}

@Override
public void focusLost(FocusEvent e) {
// TODO Auto-generated method stub

}

});

m.addFocusListener(new FocusListener() {

@Override
public void focusGained(FocusEvent arg0) {
m.setText("");

}

@Override
public void focusLost(FocusEvent e) {
// TODO Auto-generated method stub

}

});
y.addFocusListener(new FocusListener() {

@Override
public void focusGained(FocusEvent arg0) {
y.setText("");

}

@Override
public void focusLost(FocusEvent e) {
// TODO Auto-generated method stub

}

});
d.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {

dayinStr = d.getText();
Integer.parseInt(dayinStr);

}

});
m.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {

monthinStr = m.getText();


}

});
y.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {

yearinStr = y.getText();
odp.setText(strLong);

}

});


}



public static void main(String[] args) {

HowManyDaysTest app = new HowManyDaysTest();
app.getDifference();

}

}

最佳答案

将日、月和年文本字段声明为实例变量,并在 getDifference() 方法中访问它们。

关于java - 如何使变量可以被其他方法使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43252946/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com