Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.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语句转换为Python_Java_Python - Fatal编程技术网

将复杂的Java语句转换为Python

将复杂的Java语句转换为Python,java,python,Java,Python,我正在将一些Java代码移植到Python中,并坚持使用Java中的以下条件语句。任何帮助都将不胜感激 if (xGrad * yGrad <= (float) 0 /*(1)*/ ? Math.abs(xGrad) >= Math.abs(yGrad) /*(2)*/ ? (tmp = Math.abs(xGrad * gradMag)) >= Math.abs(yGrad * neMag

我正在将一些Java代码移植到Python中,并坚持使用Java中的以下条件语句。任何帮助都将不胜感激

if (xGrad * yGrad <= (float) 0 /*(1)*/
                    ? Math.abs(xGrad) >= Math.abs(yGrad) /*(2)*/
                        ? (tmp = Math.abs(xGrad * gradMag)) >= Math.abs(yGrad * neMag - (xGrad + yGrad) * eMag) /*(3)*/
                            && tmp > Math.abs(yGrad * swMag - (xGrad + yGrad) * wMag) /*(4)*/
                        : (tmp = Math.abs(yGrad * gradMag)) >= Math.abs(xGrad * neMag - (yGrad + xGrad) * nMag) /*(3)*/
                            && tmp > Math.abs(xGrad * swMag - (yGrad + xGrad) * sMag) /*(4)*/
                    : Math.abs(xGrad) >= Math.abs(yGrad) /*(2)*/
                        ? (tmp = Math.abs(xGrad * gradMag)) >= Math.abs(yGrad * seMag + (xGrad - yGrad) * eMag) /*(3)*/
                            && tmp > Math.abs(yGrad * nwMag + (xGrad - yGrad) * wMag) /*(4)*/
                        : (tmp = Math.abs(yGrad * gradMag)) >= Math.abs(xGrad * seMag + (yGrad - xGrad) * sMag) /*(3)*/
                            && tmp > Math.abs(xGrad * nwMag + (yGrad - xGrad) * nMag) /*(4)*/
                    ) {
                    magnitude[index] = gradMag >= MAGNITUDE_LIMIT ? MAGNITUDE_MAX : (int) (MAGNITUDE_SCALE * gradMag);
                } else {
                    magnitude[index] = 0;
                }
if(xGrad*yGrad=Math.abs(yGrad)/*(2)*/
?(tmp=数学abs(xGrad*gradMag))>=数学abs(yGrad*neMag-(xGrad+yGrad)*eMag)/*(3)*/
&&tmp>数学abs(yGrad*swMag-(xGrad+yGrad)*wMag)/*(4)*/
:(tmp=Math.abs(yGrad*gradMag))>=Math.abs(xGrad*neMag-(yGrad+xGrad)*nMag)/*(3)*/
&&tmp>Math.abs(xGrad*swMag-(yGrad+xGrad)*sMag)/*(4)*/
:Math.abs(xGrad)>=Math.abs(yGrad)/*(2)*/
?(tmp=Math.abs(xGrad*gradMag))>=Math.abs(yGrad*seMag+(xGrad-yGrad)*eMag)/*(3)*/
&&tmp>Math.abs(yGrad*nwMag+(xGrad-yGrad)*wMag)/*(4)*/
:(tmp=Math.abs(yGrad*gradMag))>=Math.abs(xGrad*seMag+(yGrad-xGrad)*sMag)/*(3)*/
&&tmp>Math.abs(xGrad*nwMag+(yGrad-xGrad)*nMag)/*(4)*/
) {
震级[指数]=gradMag>=震级极限?震级最大值:(int)(震级刻度*gradMag);
}否则{
震级[指数]=0;
}
天哪,你是认真的吗

我会尝试将三元组拆分为常规if语句:

boolean update = false;
if (xGrad * yGrad <= 0) {
    if (Math.abs(xGrad) >= Math.abs(yGrad) /*(2)*/
            ? (tmp = Math.abs(xGrad * gradMag)) >= Math.abs(yGrad * neMag - (xGrad + yGrad) * eMag) /*(3)*/
                && tmp > Math.abs(yGrad * swMag - (xGrad + yGrad) * wMag) /*(4)*/
            : (tmp = Math.abs(yGrad * gradMag)) >= Math.abs(xGrad * neMag - (yGrad + xGrad) * nMag) /*(3)*/
                && tmp > Math.abs(xGrad * swMag - (yGrad + xGrad)  /*(4)*/)
        update = true;
} else {
    if (Math.abs(xGrad) >= Math.abs(yGrad) /*(2)*/
            ? (tmp = Math.abs(xGrad * gradMag)) >= Math.abs(yGrad * seMag + (xGrad - yGrad) * eMag) /*(3)*/
                && tmp > Math.abs(yGrad * nwMag + (xGrad - yGrad) * wMag) /*(4)*/
            : (tmp = Math.abs(yGrad * gradMag)) >= Math.abs(xGrad * seMag + (yGrad - xGrad) * sMag) /*(3)*/
                && tmp > Math.abs(xGrad * nwMag + (yGrad - xGrad) * nMag) /*(4)*/)
        update = true;
}
if (update) {
    magnitude[index] = gradMag >= MAGNITUDE_LIMIT ? MAGNITUDE_MAX : (int) (MAGNITUDE_SCALE * gradMag);
} else {
    magnitude[index] = 0;
}
布尔更新=false;
如果(xGrad*yGrad=Math.abs(yGrad)/*(2)*/
?(tmp=数学abs(xGrad*gradMag))>=数学abs(yGrad*neMag-(xGrad+yGrad)*eMag)/*(3)*/
&&tmp>数学abs(yGrad*swMag-(xGrad+yGrad)*wMag)/*(4)*/
:(tmp=Math.abs(yGrad*gradMag))>=Math.abs(xGrad*neMag-(yGrad+xGrad)*nMag)/*(3)*/
&&tmp>Math.abs(xGrad*swMag-(yGrad+xGrad)/*(4)*/)
更新=真;
}否则{
如果(数学abs(xGrad)>=数学abs(yGrad)/*(2)*/
?(tmp=Math.abs(xGrad*gradMag))>=Math.abs(yGrad*seMag+(xGrad-yGrad)*eMag)/*(3)*/
&&tmp>Math.abs(yGrad*nwMag+(xGrad-yGrad)*wMag)/*(4)*/
:(tmp=Math.abs(yGrad*gradMag))>=Math.abs(xGrad*seMag+(yGrad-xGrad)*sMag)/*(3)*/
&&tmp>Math.abs(xGrad*nwMag+(yGrad-xGrad)*nMag)/*(4)*/)
更新=真;
}
如果(更新){
震级[指数]=gradMag>=震级极限?震级最大值:(int)(震级刻度*gradMag);
}否则{
震级[指数]=0;
}

然后重复这个过程,直到所有三元组都简化为嵌套的if语句。

在这里,这可能会使您更容易

        String expression = """         
        if (xGrad * yGrad <= (float) 0 /* (1) */
                ? Math.abs(xGrad) >= Math.abs(yGrad) /* (2) */
                        ? (tmp = Math.abs(xGrad * gradMag)) >= Math
                                .abs(yGrad * neMag - (xGrad + yGrad)
                                        * eMag) /* (3) */
                                && tmp > Math.abs(yGrad * swMag
                                        - (xGrad + yGrad)
                                                * wMag) /* (4) */
                        :
                        (tmp = Math.abs(yGrad * gradMag)) >= Math
                                .abs(xGrad * neMag - (yGrad + xGrad)
                                        * nMag) /* (3) */
                                && tmp > Math.abs(xGrad * swMag
                                        - (yGrad + xGrad)
                                                * sMag) /* (4) */
                : Math.abs(xGrad) >= Math.abs(yGrad) /* (2) */
                        ? (tmp = Math.abs(xGrad * gradMag)) >= Math
                                .abs(yGrad * seMag + (xGrad - yGrad)
                                        * eMag) /* (3) */
                            && tmp > Math.abs(yGrad * nwMag
                                        + (xGrad - yGrad)
                                                * wMag) /* (4) */
                :
                (tmp = Math.abs(yGrad * gradMag)) >= Math
                        .abs(xGrad * seMag
                                + (yGrad - xGrad) * sMag) /* (3) */
                        && tmp > Math.abs(xGrad * nwMag
                                + (yGrad - xGrad) * nMag) /* (4) */
        ) 
        """;

        String[] parts = expression.replaceAll("\\s+","").replaceAll("([?:])", "#$1#").split("#");

        for (String part : parts) {
            String subParts[] = part.split("&&");
            int len = subParts.length;
            System.out.print(subParts[0]);
            if (len > 1) {
                for (int i = 1; i < subParts.length; i++) {
                    System.out.println(" && \n" + subParts[i]);
                }
            }
            System.out.println();
        }

字符串表达式=”“”
如果(xGrad*yGrad=Math.abs(yGrad)/*(2)*/
?(tmp=Math.abs(xGrad*gradMag))>=Math
.abs(yGrad*neMag-(xGrad+yGrad)
*eMag)/*(3)*/
&&tmp>Math.abs(yGrad*swMag
-(xGrad+yGrad)
*wMag)/*(4)*/
:
(tmp=Math.abs(yGrad*gradMag))>=Math
.abs(xGrad*neMag-(yGrad+xGrad)
*nMag)/*(3)*/
&&tmp>Math.abs(xGrad*swMag
-(yGrad+xGrad)
*sMag)/*(4)*/
:Math.abs(xGrad)>=Math.abs(yGrad)/*(2)*/
?(tmp=Math.abs(xGrad*gradMag))>=Math
.abs(yGrad*seMag+(xGrad-yGrad)
*eMag)/*(3)*/
&&tmp>Math.abs(yGrad*nwMag
+(xGrad-yGrad)
*wMag)/*(4)*/
:
(tmp=Math.abs(yGrad*gradMag))>=Math
.abs(xGrad*seMag
+(yGrad-xGrad)*sMag)/*(3)*/
&&tmp>Math.abs(xGrad*nwMag
+(yGrad-xGrad)*nMag)/*(4)*/
) 
""";
String[]parts=expression.replaceAll(“\\s+”,”).replaceAll(([?:]),“#$1#”).split(“#”);
用于(字符串部分:部分){
字符串子部分[]=部分拆分(&&);
int len=子部分长度;
系统输出打印(子部分[0]);
如果(len>1){
对于(int i=1;i
你试过什么了吗?你到底被卡在哪里了?我不熟悉?和:命名法。试着读一下[(三元运算符)找到页面。非常有用。谢谢。我想我理解Java中三元运算的基本操作。需要一些帮助来阻止复杂的Java条件语句。谢谢。这回答了你的问题吗?似乎复杂语句提取到:条件?真?真:假:假?真:假。这不正确让我明白。谢谢你的帮助!