我是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的程序。 现在唯一的事情是,如何告诉用户输入错误的选择后输入一个不同的数字,而不是通过whoule序列输入。
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);
}
}
}
答案 0 :(得分:2)
如果您坚持不想使用数组,那么可以使用switch语句:
switch(gear) {
case 1: ratioGearOne * ...
case 2: ratioGearTwo * ...
...
}
等等。您还需要一个默认值:只要输入不符合其中一种情况(例如打印错误),就会运行默认值。
如果您要使用数组,可以这样做:
double[] ratios = { 3.4, 2.5, 1.6 }
然后你可以像这样计算MPH:
MPH = ratios[gear - 1] * ...
注意你需要从齿轮中减去一个,因为数组索引从0开始。我相信你还需要将你的齿轮变量改为int(使用nextInt()),因为你不能有半个索引。
正如其他评论者所说,我强烈建议您在遇到任何不良习惯之前阅读Java约定(特别是变量命名)。