将用户输入值从 Main 中的 JOptionPane 对话框传递到包中的其他 类
Passing user input values from a JOptionPane dialog box in Main to other classes in package
我是 java 编程的新手,所以我可能犯了数百个错误,尤其是在我使用 classes 的方式和程序的组织方面。
我想做的就是使用joptionpane从用户那里获取一些整数和双输入(当optionpane出现时,盒子中的默认值。
目前我有一个 Main class,其中包含我的主要方法和主要 class 中的 JOptionPane 代码。我想将一些输入值传递给 public final class,其中我的程序中有许多其他 classes 使用的静态值。
我的 Optionpane 代码如下所示:
public static void main(String[] args){
JTextField simsInput = new JTextField("1");
JTextField pphInput = new JTextField("0");
Object[] inputs = {
"Number of simulations",simsInput,
"Input people per household (0 for random pph based on probability",pphInput
};
JOptionPane.showConfirmDialog(null, inputs, "User Inputs", JOptionPane.OK_CANCEL_OPTION);
String simsInputString = simsInput.getText();
int numSimsI = Integer.parseInt(simsInputString);
String pphInputString = pphInput.getText();
int pphI = Integer.parseInt(pphInputString);
例如,我可以将 pphI 传递给 public final class,以供其他 classes 在程序执行期间用作常量吗?
事实上 class 是 final
只是意味着它不能被扩展(通过关键字 extends
),这在你的系统中似乎不是问题案例.
但是,如果您希望其他 classes 将 pphI 视为常量,则可以采用多种方法。例如:
静态方式:在你的class中创建一个静态字段来存储常量:
public static int pphI;
并在您读取用户输入后立即分配它:
pphI = Integer.parseInt(pphInputString);
然后其他 classes 可以通过以下方式访问它:
YourClass.pphI;
请注意,这种方法有点不安全,因为其他 classes 可以随意修改 pphI。因此,作为替代方案,您可以将该字段设为私有,并创建一个 static getter:
private static int pphI;
public static int getPphI(){ // Now the field is Read-Only from other classes
return pphI;
}
现在其他 class 通过以下方式访问该字段:
YourClass.getPphI();
非静态方式:将变量传递给您将从 main
方法创建的其他 classes 的实例。
SomeOtherClass object = new SomeOtherClass(pphI);
并且在 SomeOtherClass 的构造函数中,你会得到类似这样的内容:
class SomeOtherClass {
private final int pphI;
public SomeOtherClass(int pphI){ // Constructor
this.pphI = pphI;
}
public void someMethod(){
System.out.println(pphI); // Print the constant
}
}
我是 java 编程的新手,所以我可能犯了数百个错误,尤其是在我使用 classes 的方式和程序的组织方面。
我想做的就是使用joptionpane从用户那里获取一些整数和双输入(当optionpane出现时,盒子中的默认值。
目前我有一个 Main class,其中包含我的主要方法和主要 class 中的 JOptionPane 代码。我想将一些输入值传递给 public final class,其中我的程序中有许多其他 classes 使用的静态值。
我的 Optionpane 代码如下所示:
public static void main(String[] args){
JTextField simsInput = new JTextField("1");
JTextField pphInput = new JTextField("0");
Object[] inputs = {
"Number of simulations",simsInput,
"Input people per household (0 for random pph based on probability",pphInput
};
JOptionPane.showConfirmDialog(null, inputs, "User Inputs", JOptionPane.OK_CANCEL_OPTION);
String simsInputString = simsInput.getText();
int numSimsI = Integer.parseInt(simsInputString);
String pphInputString = pphInput.getText();
int pphI = Integer.parseInt(pphInputString);
例如,我可以将 pphI 传递给 public final class,以供其他 classes 在程序执行期间用作常量吗?
事实上 class 是 final
只是意味着它不能被扩展(通过关键字 extends
),这在你的系统中似乎不是问题案例.
但是,如果您希望其他 classes 将 pphI 视为常量,则可以采用多种方法。例如:
静态方式:在你的class中创建一个静态字段来存储常量:
public static int pphI;
并在您读取用户输入后立即分配它:
pphI = Integer.parseInt(pphInputString);
然后其他 classes 可以通过以下方式访问它:
YourClass.pphI;
请注意,这种方法有点不安全,因为其他 classes 可以随意修改 pphI。因此,作为替代方案,您可以将该字段设为私有,并创建一个 static getter:
private static int pphI;
public static int getPphI(){ // Now the field is Read-Only from other classes
return pphI;
}
现在其他 class 通过以下方式访问该字段:
YourClass.getPphI();
非静态方式:将变量传递给您将从 main
方法创建的其他 classes 的实例。
SomeOtherClass object = new SomeOtherClass(pphI);
并且在 SomeOtherClass 的构造函数中,你会得到类似这样的内容:
class SomeOtherClass {
private final int pphI;
public SomeOtherClass(int pphI){ // Constructor
this.pphI = pphI;
}
public void someMethod(){
System.out.println(pphI); // Print the constant
}
}