/ varible int time不会显示输入的数值

时间:2016-03-05 19:11:12

标签: java if-statement java.util.scanner

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

C:\Users\DeLaCruz\Desktop\j2

V:\CSC106-Spring 2016\j3

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);

    }
   }
 }

2 个答案:

答案 0 :(得分:1)

尝试使用equalsIgnoreCase()代替equals()

在您的程序中,如果未以您正在检查的格式输入input的值,则控件不会输入任何条件块。

您的代码不适用于:

  • 水,空气,水等

因此请使用equalsIgnoreCase()来避免案件的严重性。

注意:

进行以下更正:

Double Distance=keyboard.nextDouble();

当被除数不能被除数完全整除时,整数/整数类型的除法可能导致精度损失。

  • 5/3将返回1,您将丢失小数部分。
  • 3/5将返回0.

因此,最好将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