我是 Java 编程新手,我想编写一个程序来计算与档位和 RPM 相关的汽车速度。
我搜索了不同的网站或主题,但找不到任何内容。也许答案就在那里,但我还没有看到:D。
一个小但不完整的程序例如:
import java.util.Scanner;
public class Speed {
public static void main(String[] args) {
double Gear, MPH, RPM
double TireDia = 78;
double Pi = 3.1415;
double RatioGearOne = 3.4;
double RatioGearTwo = 2.5;
double RatioGearThree = 1.6;
Scanner input = new
Scanner (System.in);
System.out.println("What gear is it in?");
Gear = input.nextDouble();
System.out.println("How many RPM are shown?");
RPM = input.nextDouble();
MPH = Gear * RPM * Pi * TireDia * 60 / 1000000;
System.out.println("The car is going: " + MPH + " MPH");
}
}
就像我问的,我希望您可以输入 Gear 1 或 Gear 2 或 Gear 3 乘以 PRM、Pi 等来显示 MPH。 我读到你也可以用数组来做到这一点,但我现在希望它符合这一点,因为我当时对它有了更多的理解。
希望你能帮助我。
更新:
我现在已经按照我想要的方式工作了,并根据您的建议对其进行了一些清理。现在我需要弄清楚如何解决越界错误,但还没有弄清楚如何(现在已经搜索了几个小时)并获得整数的速度。 感谢迄今为止的帮助。
这是我当前的程序:
import java.util.Scanner;
public class geschwindigkeitAuto {
public static void main(String[] args) {
double gang, kmh, upm;
Scanner input = new Scanner (System.in);
double[] übersetzungen = {3.7, 1.95, 1.3, 1.03, 0.84, 0.68};
System.out.println("Welcher Gang ist Eingelegt? (wähle 1 bis 6): ");
gang = input.nextInt();
System.out.println("Wieviele Umdrehungen werden angezeigt? (wähle 0-6500): ");
upm = input.nextInt();
kmh = upm / übersetzungen[(int)gang -1] / 3.62 * 68 * 3.141 * 60 / 100000;
System.out.print("Die Geschwindigkeit des Autos beträgt: " + kmh + " kmh");
}
}
更新2
我已经搜索了更多内容并观看了一些视频来避免 OutOfBoundExcenption,并且找到了一个解决方案,这样我就无法在程序中输入少于 1 或多于 6 的数据而不会失败。 现在唯一的问题是,如何告诉用户在做出错误选择后输入不同的数字,而不是拳头浏览整个序列。
import java.util.Scanner;
public class geschwindigkeitAuto {
public static void main(String[] args) {
double gang, kmh = 0, upm;
Scanner input = new Scanner (System.in);
double[] übersetzungen = {3.7, 1.95, 1.3, 1.03, 0.84, 0.68};
System.out.println("Welcher Gang ist Eingelegt? (wähle Gang 1 bis 6): ");
gang = input.nextInt();
System.out.println("Wieviele Umdrehungen werden angezeigt? (wähle 0-6500): ");
upm = input.nextInt();
try {
kmh = upm / übersetzungen[(int)gang -1] / 3.62 * 68 * 3.141 * 60 / 100000; }
catch(ArrayIndexOutOfBoundsException ex) {
System.out.println("Du hast einen nicht vorhandenen Gang gewählt! "
+ "Es gibt nur 6 Gänge zur Auswahl" + "\n"); }
System.out.println("Die Geschwindigkeit des Autos beträgt: " + kmh + " kmh" + "\n");
System.out.print("Noch eine Berechnung? (J/N) : ");
System.out.printf("\n");
String var= input.next();
if(var.equalsIgnoreCase("J")) {
main(null);
}
}
}
最佳答案
如果您坚决不想使用数组,那么您可以使用 switch 语句:
switch(gear) {
case 1: ratioGearOne * ...
case 2: ratioGearTwo * ...
...
}
等等。您还需要一个默认值:只要输入不符合其中一种情况(例如打印错误),就会运行该默认值。
如果你要使用数组,你可以这样做:
double[] ratios = { 3.4, 2.5, 1.6 }
然后你可以像这样计算 MPH:
MPH = ratios[gear - 1] * ...
请注意,您需要从 gear 中减去 1,因为数组索引从 0 开始。我相信您还需要将 gear 变量更改为 int (使用 nextInt()),因为您不能有一半的索引。
正如其他评论者所说,我强烈建议您在养成任何坏习惯之前先阅读 Java 约定(特别是变量命名)。
关于java - 在解决了最初的越界异常后,如何将 a 与 b 或 c 相乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47672533/