Я пишу программу для задания и получаю неправильные вычисления при запуске программы.Ошибка вычисления в 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");
}
}
Вы никогда не устанавливали 'расстояние' ни на что – UnholySheep
Похоже, вы никогда не называете' setDistance'? –
Ваши углы в градусах? Потому что функции, которые вы называете, принимают радианы. См. ['Math.toRadians (double)'] (https://docs.oracle.com/javase/8/docs/api/java/lang/Math.html#toRadians-double-) –