Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.lang.arithmetricException:/by零,逻辑错误?_Java - Fatal编程技术网

java.lang.arithmetricException:/by零,逻辑错误?

java.lang.arithmetricException:/by零,逻辑错误?,java,Java,大家好,也许我没有看到错误所在,或者我对java不够了解,不知道操作的执行顺序,但是有人能解释一下为什么会出错吗 我正试图编写一个代码,简单地计算一门课程中,如果你已经知道你的分数和其中一个分数的权重,那么你要想在ex a模块上获得你想要的分数,你必须获得的最低分数 //计算最低等级 public int calculateMinimumGradeWith2Ass1unknown (int Grade1, int Weight1, int WeightOnNext, int WantedOver

大家好,也许我没有看到错误所在,或者我对java不够了解,不知道操作的执行顺序,但是有人能解释一下为什么会出错吗

我正试图编写一个代码,简单地计算一门课程中,如果你已经知道你的分数和其中一个分数的权重,那么你要想在ex a模块上获得你想要的分数,你必须获得的最低分数

//计算最低等级

public int calculateMinimumGradeWith2Ass1unknown (int Grade1, int Weight1, int WeightOnNext, int WantedOverAll){

    int val1 = Grade1*(Weight1/100);
    int estimate = WantedOverAll-val1;
    int Grade2 = estimate/(WeightOnNext/100);

    return Grade2;
}

我感谢任何类型的帮助:)

首先,在Java中,变量名首先使用小写字符(camelCase)编写

类名首先用大写字符(PascalCase)书写


现在是例外
WeightOnNext/100
可能太小了,使用整数除法,它将四舍五入为零。然后取
estimate
除以
0
,得到异常

int Grade2 = estimate / (WeightOnNext / 100);

只需将所有的
int
s与
double
s进行交换,它就会工作。

问题似乎出在代码的以下部分:

int Grade2 = estimate/(WeightOnNext/100);
如果您包含导致该异常的示例值,这会很有帮助,但您需要注意,
int
s不支持分数部分,它们只是将其截断

因此,当
WeightOnNext
小于
100
时,
(WeightOnNext/100)
将始终被切割为
0
,并且在
估计/0时会导致异常被执行

例如:

WeightOnNext = 50;
50:100=0.5
,但分数部分(
.5
)正在被切割,因此分配给
int
变量后会出现
0

你应该考虑使用<代码>双< /代码> S来支持这些部分。



顺便说一句,您应该遵循Java语言的命名约定——变量的名称应该用camelCase编写,以使您的代码在将来对其他人甚至您更具可读性

请发布并包含堆栈跟踪,并在代码中标识引发异常的语句。
WeightOnNext
的值是多少?有些东西是零。可能是
weightonext
。在ints中,
5/3==0
weightonext
时,您似乎遇到了问题100@dehasi5/3==1而不是0吗?@PrzemysławMoskal我的意思是
3/5
;)