//varible int time won't display the numeric value entered
声音的速度 下表显示了空气,水和钢中声音的近似速度: 中速 空气每秒1,100英尺 每秒水4,900英尺 钢每秒16,400英尺 编写一个程序,要求用户输入“空气”,“水”或“钢铁”,以及距离 声波会在媒介中传播。然后程序应该显示的数量 它需要的时间。您可以计算声音在空中传播所需的时间 以下公式: 时间5距离/ 1,100 您可以使用以下公式计算声音在水中行进所需的时间量: 时间5距离/ 4,900 您可以使用以下公式计算声音在钢中行进所需的时间量: 时间5距离/ 16,400
import java.util.Scanner;
public class ProgramSpeedOfSound{
public static void main(String [] args){
Scanner keyboard = new Scanner(System.in);
String input;
System.out.println("Enter Air, water or steel ");
input = keyboard.nextLine().toUpperCase();
if(input.equals("Air")){
System.out.println("what is the Distance? ");
int Distance = keyboard.nextInt();
int var = 1100;
double time = Distance / var;
System.out.println("it would take " + time);
}
else if(input.equals("Water")){
System.out.println("what is the Distance? ");
int Distance = keyboard.nextInt();
double time = (((Distance/ 4900)));
System.out.println("it would take " + time);
}
else{
System.out.println("what is the Distance? ");
int Distance = keyboard.nextInt();
double time = Distance/ 16400;
System.out.println("it would take " + time);
}
}
}
答案 0 :(得分:1)
尝试使用equalsIgnoreCase()
代替equals()
。
在您的程序中,如果未以您正在检查的格式输入input
的值,则控件不会输入任何条件块。
您的代码不适用于:
因此请使用equalsIgnoreCase()
来避免案件的严重性。
注意:
进行以下更正:
Double Distance=keyboard.nextDouble();
当被除数不能被除数完全整除时,整数/整数类型的除法可能导致精度损失。
因此,最好将Distance
声明为Double
而不是int
。
答案 1 :(得分:1)
分割两个整数时,需要对分母或分子进行类型转换。你得到0.0作为答案的原因是因为两个整数的除法给出整数值为0,后来转换为double 0.0。例如,请参阅下面代码中的第3行。您也可以将类型转换为双倍。
System.out.println("what is the Distance? ");
int Distance = keyboard.nextInt();
double time = (float)Distance / 16400;
System.out.println("it would take " + time);
以下是类型转换距离浮动后的输出
Enter Air, water or steel
Air
what is the Distance?
100
it would take 0.006097560748457909