2016-10-26 3 views
0

Я пишу программу для задания и получаю неправильные вычисления при запуске программы.Ошибка вычисления в Java

Программа Я создаю разработана, чтобы ввод данных пользователем для управления роботом, а затем рассчитать и распечатать следующее:

  • пройденное расстояние
  • Горизонтальное положение
  • Вертикальное положение
  • Использование батареи

Расчет использования батареи работает нормально, но остальная часть c alculations печатать значение 0.0 или -0.0

Мой код распространяется по двум классам, один из которых содержит метод конструктора и все вычисления, в то время как другой содержит основной метод с кодом для ввода результатов ввода и печати.

Класс, содержащий конструктор и все расчеты:

class RobotMovement{ 
    private double angle; 
    private double speed; 
    private double time; 
    private double distance; 

    //Constructor method 
    public RobotMovement(double a,double s,double t){ 
     angle = a; 
     speed = s; 
     time = t; 
    } 

    //Set methods 
    public void setAngle(double a){ 
     angle = a; 
    } 
    public void setSpeed(double s){ 
     speed = s; 
    } 
    public void setTime(double t){ 
     time = t; 
    } 
    public void setDistance(double d){ 
     distance = speed * time; 
    } 

    //Get methods 
    public double getAngle(){ 
     return angle; 
    } 
    public double getSpeed(){ 
     return speed; 
    } 
    public double getTime(){ 
     return time; 
    } 
    public double getDistance(){ 
     return distance; 
    } 

    //Calculation Methods 
    public double calcHorizontal(){ 
     return distance * Math.sin(angle); 
    } 
    public double calcVertical(){ 
     return distance * Math.cos(angle); 
    } 
    public double calcBattery(){ 
     return time * Math.pow(speed,2) * 3.7; 
    } 
} 

Класс, содержащий Основной метод:

import java.util.*; 
class RobotUser{ 
    public static void main (String[] args){  
    Scanner scan = new Scanner(System.in); 

     //Getting user input for the Robot object 
     System.out.println("\nPlease enter the Angle, Speed and Time you wish the Robot to travel"); 

      System.out.println("\nAngle:"); 
      double angle = scan.nextDouble(); 

      System.out.println("\nSpeed:"); 
      double speed = scan.nextDouble(); 

      System.out.println("\nTime:"); 
      double time = scan.nextDouble(); 

     //Instantiates RobotMovement 
     RobotMovement Robot = new RobotMovement(angle,speed,time); 

     System.out.println("\nThe Robot moved " + Robot.getDistance() + " meters!"); 

     System.out.println("\nThe Robots horizontal position is " + Robot.calcHorizontal()); 

     System.out.println("\nThe Robots vertical position is " + Robot.calcVertical()); 

     System.out.println("\nThe Robot used " + Robot.calcBattery() + " seconds of idle time"); 



    } 
} 
+3

Вы никогда не устанавливали 'расстояние' ни на что – UnholySheep

+2

Похоже, вы никогда не называете' setDistance'? –

+1

Ваши углы в градусах? Потому что функции, которые вы называете, принимают радианы. См. ['Math.toRadians (double)'] (https://docs.oracle.com/javase/8/docs/api/java/lang/Math.html#toRadians-double-) –

ответ

0

Я думаю, ваша проблема в том, что вы никогда не вычисляя расстояние, и в Java значение по умолчанию для переменной расстояния затем становится 0.0. Поэтому, когда вы просите рассчитать ответ для других 3 методов, вы умножаете каждый ответ на 0.0, и именно так вы получаете эти результаты. calcBattery - единственный, который не использует переменную расстояния.

TLDR; просто вычислите расстояние, прежде чем просить рассчитать другие значения.

Смежные вопросы