将用户输入值从 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
  }
}