gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 12:59:00 24 4
gpt4 key购买 nike

现在我正在开发一个 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/

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