gpt4 book ai didi

java - 在解决了最初的越界异常后,如何将 a 与 b 或 c 相乘

转载 作者:行者123 更新时间:2023-11-30 02:18:10 25 4
gpt4 key购买 nike

我是 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/

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