将脚本从python转换为java的问题

将脚本从python转换为java的问题,java,python,Java,Python,我有一个脚本,首先用python编写,然后用java编写。使用给定的参数100,50,9,3,python脚本将生成1630。出于某种原因,java版本的结果是-22。为什么会这样?java代码中是否存在逻辑错误 Python: def calcPopulation(E,P,R,Y): if E > 1000 or P > 100 or R > 50 or Y > 10: print("One or more values that you ent

我有一个脚本,首先用python编写,然后用java编写。使用给定的参数100,50,9,3,python脚本将生成1630。出于某种原因,java版本的结果是-22。为什么会这样?java代码中是否存在逻辑错误

Python:

def calcPopulation(E,P,R,Y):
    if E > 1000 or P > 100 or R > 50 or Y > 10:
        print("One or more values that you entered is too high")
        return None
    elif Y == 1:
        return E*2

    males = E
    females = E
    #^For first year
    for i in range(Y-1): #males
        males -= int((P*males)/100)

    for i in range(Y-1):
        females += int(-(P*females)/100)
        for i in range(int(females)):
##            femalebaby = (R/2)
##            malebaby = (R/2)
            females+= (R/2)
            males+= (R/2)
    return int(males+females)



def main():
    print(calcPopulation(100,50,9,3))
    #Result is 1630


if __name__=="__main__":
    main()
爪哇:

import java.util.*;
公营兔{
公共静态整数计算人口(整数E、整数P、整数R、整数Y){
如果(E>1000 | P>100 | R>50 | Y>10){
System.out.print(“您输入的一个或多个值太高”);
返回0;
}
如果(Y==1),则为else{
返回E*2;
}
int男性=0;
int女性=0;
雄性+=(int)E;
雌性+=(int)E;

对于(inti=0;i,在python中,当你将一个整数除以一个整数,如
5/2
,你得到2.5。但在Java中,你得到2,因为Java将这种除法视为整数除法。在python中,你可以使用
/
进行整数除法

所以像这样的行:

males -= int((P*males)/100)
将在Java中生成不同的结果。若要在Java中正确编写此命令,需要将其中一个操作数设置为双精度,如下所示:

males -= (int)((P*males)/100.0); // 100.0 is double, 100 is int.

更改整数除以整数的所有行。

我正在一个在线IED上运行java代码。当我将females+=(R/2);更改为females+=(R/2.0)时,整个事情都冻结了。@PeterFilip尝试另一个IDE,最好是您机器上的IDE。
males -= (int)((P*males)/100.0); // 100.0 is double, 100 is int.