java - 尝试使用 Double 与 double 计算用户输入

标签 java double runtime-error

现在我正在开发一个 GUI,它将根据用户在文本字段中输入的内容来计算运动学值。我创建了一个具有 Double(不是 double)类型值的私有(private)内部类,然后创建了一个方法来根据给定的值获取值。例如,这将返回初始速度:

public Double getInitialVelocity(Double vf, Double a, Double ti, Double tf) {
    deltaT = deltaT(tf, ti);
    initialVelocity = vf - (a * deltaT);
    df.format(initialVelocity);
    return initialVelocity;
}

当我尝试测试此方法时出现问题。我设置了新的 double ,并使用 getInitialVelocity在我的主课中:

Kinematics test = new Kinematics(); // creates object from inner class
Double vf = 1.0, a = 2.0, ti = 0.5, tf = 1.5;
test.getInitialVelocity(vf, a, ti, tf);

当我运行此测试时,出现此错误:

Static Error: No method in Kinematics with name 'getInitialVelocity' matches this     invocation
    Arguments: (Double, Double, Double, Double)
    Candidate signatures: double getInitialVelocity()

有人知道如何正确执行此操作吗?我需要使用 Double 类型,因为我要比较给定为 null 的值,然后根据哪些值为 null 来使用适当的公式。另外,当从字符串转换时,我应该只使用 Double.parseDouble(textField.getText());

编辑1:以下是我的类(class)的相关部分:

私有(private)内部类(运动学):

<pre><code>private class Kinematics { private Double initialVelocity, finalVelocity, acceleration, timeFinal, timeInitial; private Double deltaT; // constructor public Kinematics() { } public Double deltaT(Double tf, Double ti) { if(!(tf == null && ti == null)){ deltaT = tf - ti; } return deltaT; } public Double getInitialVelocity(Double vf, Double a, Double ti, Double tf) { deltaT = deltaT(tf, ti); initialVelocity = vf - (a * deltaT); df.format(initialVelocity); return initialVelocity; } </code></pre>

在我的主类(KinematicsPanel)中,我有:

<pre><code> Kinematics values = new Kinematics(); viLabel = new JLabel("Initial Velocity: "); viText = new JTextField(1); vfLabel = new JLabel("Final Velocity: "); vfText = new JTextField(1); aLabel = new JLabel("Acceleration: "); aText = new JTextField(1); tiLabel = new JLabel("Initial Time: "); tiText = new JTextField(1); tfLabel = new JLabel("Final Time: "); tfText = new JTextField(1); // compute button & result compute = new JButton("Compute"); compute.addActionListener(this); result = new JTextField(2); result.setEditable(false); // can not be edited public void actionPerformed(ActionEvent e) { String action = e.getActionCommand(); // parse each string to a value Double vf = 0.0, a = 0.0, ti = 0.0, tf = 0.0; if(vfText != null) {vf = Double.parseDouble(vfText.getText());} if(aText != null) {a = Double.parseDouble(aText.getText());} if(tiText != null) {ti = Double.parseDouble(tiText.getText());} if(tfText != null) {tf = Double.parseDouble(tfText.getText());} if(action.equals("Compute")) { if(viText == null) { // get initial velocity // get values values.getInitialVelocity(vf, a, ti, tf); System.out.println(values.toString()); // to test result.setText(values.toString()); } } </code></pre>

截至目前,这没有任何作用,这就是我在 Dr.Java 的交互 Pane 中测试该方法的原因。

Edit2:正在使用的格式函数位于主类中:

<p>DecimalFormat df = new DecimalFormat("#.00");</p>

最佳答案

您的代码一切正常,您使用的是哪个编译器? getInitialVelocity 方法在 Kinematics 类中吗?

关于java - 尝试使用 Double 与 double 计算用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23662575/

相关文章:

c++ - float 的二进制表示

reactjs - react : Using error boundries to highligh broken components

java - 如何在Java中使用DAO访问DB

java - 使用 Jackson 实现 Collection 的类的反序列化失败

java - 如何将 double 变量四舍五入到小数点后两位?

java - DecimalFormat 不格式化 double 值等于 0

postgresql - 在创建 postgres DB 时,centOs 6.9 中的无效命令\ir

java - 如果哈希码等于实现不正确,我的对象创建会失败吗?

java - 奇怪的 Java 行为。三元运算符

java - 如何在 Java 中将私钥作为字符串传递,以便使用 SSHJ 通过 SFTP 进行连接?