2013-10-05 3 views
-4

Я не могу понять, что мои ошибки находятся в коде ниже. Кроме того: мой код выглядит так неубедительно, любой совет, как его лучше структурировать?Ошибка при использовании Math.pow и Math.sqrt в Java

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

    } 
} 
} 
+3

** Какие ошибки? –

+0

Итак ... какие сообщения об ошибках? По крайней мере, вы пытаетесь назначить двойники для int. – kiheru

+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; 
Смежные вопросы