我无法确定下面代码中的错误。另外:我的代码看起来如此不雅,任何建议如何更好地构建它?
import java.util.*;
import java.io.*;
import java.lang.Math;
public class FlightSimulator {
public static void main(String[] args){
int time;
int v_y;
int v;
int v_squart;
int height;
Scanner myscan = new Scanner(System.in);
System.out.print("Please enter the time for which you want to output the height of the " +
"plane ");
time = myscan.nextInt();
if(time==0){
System.out.print("The height of the plane is 456 meters over ground.");
}
else{
v_y = 51 - time*3;
v = Math.pow(v_y+20, 2);
v_squart = Math.sqrt(v);
height = 456 - v;
System.out.print("The height of the plane is" + height);
}
}
}
答案 0 :(得分:1)
v_y = 51 - time*3;
v = (int)Math.pow(v_y+20, 2);
v_squart = (int)Math.sqrt(v); // why take the square root of something you just squared...
height = 456 - v;
System.out.print("The height of the plane is" + height);
整数不能包含十进制值,Math.pow和Math.sqrt都返回double
类型。您已将v_y
,v
和v_squart
声明为int
类型,您必须将操作转换为整数。您还可以将变量声明为double
个类型
int time;
double v_y;
double v;
double v_squart;
double height;