这让我很头疼。我是一个初学者,尝试根据Java教程创建自己的基本程序,但需要进行一些额外的计算,因此我无法弄清楚出了什么问题。
代码内没有错误,只有在我尝试运行它时才会出现错误。我只想确定高尔夫球行进的距离,并根据时间计算每秒的速度。这只是为了我自己的学习。但是我得到这个错误
Exception in thread "main" java.lang.ArithmeticException: / by zero
at GolfBall.<init>(GolfBall.java:23)
at GolfCalc.main(GolfCalc.java:6)
由于某种原因,即使试图值“ playerA.timeSecond(28)”被分配,它在尝试计算时也会将我的“分钟”和“秒”读取为零。等等 。如果我删除了进行计算的代码,只是有一个'System.out.println(minute +“ /” + second)来尝试调试正在发生的事情,它会很好地读取并显示正确的值。只有当它尝试计算它时,它才会收到错误...我不明白这是怎么回事。
*请注意,如果我仅更改'int minutes = 0; 到'int minutes = 1; 它会运行,但计算后该值将显示为0!
我的代码:
class GolfBall {
//Instantiating as integers
int distance = 0;
int minute = 0;
int second = 0;
void travel(int newValue) {
distance = newValue;
}
void timeMin(int newValue){
minute = newValue;
}
void timeSecond(int newValue){
second = newValue;
}
int time = (60 / minute) + second; // To calculate total time into seconds
double speed = distance / time; //double as the result will be a decimal
void printStates(){
System.out.println("Distance: " + distance
+ " Speed: " + speed +" Metres per second");
}
}
而我在其中分配值的主类是这样的:
public class GolfCalc {
public static void main(String[] args){
GolfBall playerA = new GolfBall();
GolfBall playerB = new GolfBall();
playerA.travel(423); // My assigned values
playerA.timeMin(1);
playerA.timeSecond(28);
playerA.printStates();
playerB.travel(397);
playerB.timeMin(1);
playerB.timeSecond(13);
playerB.printStates ();
}
}
任何帮助将是巨大的!
谢谢
您在这一行中被0除
int time = (60 / minute) + second;
在创建GolfBall对象的那一刻开始执行此行,那时该行minute
仍为0。
编辑:
您可以通过将两行移到void printState()
方法中来解决此问题,如下所示:
void printStates(){
int time = (60 / minute) + second; // To calculate total time into seconds
double speed = distance / time; //double as the result will be a decimal
System.out.println("Distance: " + distance
+ " Speed: " + speed +" Metres per second");
}
这样可以确保仅在调用方法时才执行代码。在以前的场景中,代码是在代码行int minute = 0;
和代码int second = 0;
同时执行的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句