该程序的目的是计算不同几何图形的体积(如圆柱体或金字塔形)。我首先添加了一个列表,用户可以在其中选择不同的数字。
问题是我不知道如何让程序知道使用哪个公式。我需要能够分离选择,而不是仅仅从答案中取出一个int。
private void btnAktiveraActionPerformed(java.awt.event.ActionEvent evt) {
String form = listForm.getSelectedValue().toString();
int fo = Integer.valueOf( form );
String höjd = txfHöjd.getText().toString();
int hö = Integer.valueOf( höjd );
String bredd = txfBredd.getText().toString();
int br = Integer.valueOf( bredd );
String radie = txfRadie.getText();
int ra = Integer.valueOf(radie);
String djup = txfDjup.getText();
int dj = Integer.valueOf(djup);
double ACyl = 3.14*ra*ra*hö;
double APyr = (br*dj*hö)/2;
double AKub = br*dj*hö;
double ARät = br*dj*hö;
txfHöjd.setEnabled(false);
txfBredd.setEnabled(false);
txfDjup.setEnabled(false);
txfRadie.setEnabled(false);
listForm.setEnabled(false);
}
private void btnBeräknaActionPerformed(java.awt.event.ActionEvent evt) {
// I know this code won't work, its just a reminder.
if (answer == Cyinder){
System.out.print("volymen är: "+ACyl+" cm^3");
}
}
答案 0 :(得分:0)
如果您已经有供用户选择的列表,可以考虑使用地图。您可以将所有形状作为地图的关键点,然后将体积公式作为地图的值。可以通过keySet将形状列表提供给用户,并且可以将它们的响应与地图匹配以查找公式。
编辑:你有一个动作事件中每个形状的公式。您需要将这些内容移到单独的课程中
public static class Formulas() {
// list all formulas here
private String cylinder = "3.14*r*r*h";
}
然后当你点击动作时,你可以创建一个新的Formulas类实例,并使用你可能在那里写的任何便利方法。
答案 1 :(得分:0)
我不清楚你的问题。我建议制定一个解决问题的计划。
您提到您不知道使用哪个公式。 我假设你的程序中没有很多公式。我会为每个单独的数字创建一个单独的方法,即piramidFormula(),cilinderFormula()......
当我认为你的编程水平在这个阶段是非常基础的时候,没有必要提到民族主义。
我希望这会对你有所帮助。
答案 2 :(得分:0)
你需要一个列表来保存这些东西,你似乎理解这很好。
你需要一种方法来选择东西。选择通常与列表不完全相同,您需要一个班级来负责选择"选择"行为。
每个东西都有一个可以计算音量的例程。这意味着它需要输入参数。这就是它开始变得棘手的地方,因为如果你想让你所有的东西都在同一个列表中,你需要决定如何管理列表中不同类型的不同输入参数。
public List<VolumeCalculations> volumeCalculations ...
public interface VolumeCalculation {
public double getVolume();
}
public class CubleCalcuation implements VolumeCalculation {
private double side = 0;
public void setSide(double value) {
this.side = value;
}
@Override
public double getVolume() {
return side*side*side;
}
}
其他音量计算留给你练习。
然后你需要把它们全部放在列表中
volumeCalculations.add(new CubeVolumeCalculation());
...
但是当你选择计算时,你需要&#34;某些东西&#34;要求正确的输入。
public interface CalculationInputGather {
public void setCalcualtion(VolumeCalcuation value);
public void askForInputs();
}
CubleCalcuation的那个可能看起来像
public CubeInputGather implements CalculationInputGatherer {
@Override
public void setCalculation(VolumeCalcualtion value) {
if (value instanceof CubeCalcuation) {
this.volume = value;
}
throw new IllegalArgumentException("value must be a CubeCalculation");
}
public void askForInputs() {
System.out.println("enter the side value:");
// read the value
volume.setSide(value);
}
}
然后,当您知道列表中的所选项目时,您可以使用计算映射到其输入收集器,以便为所选计算查找正确的输入收集器。