我该如何修复这段代码?(if指令)



我正在上初级Java课程。我不确定如何为每个if语句存储变量。我的代码是这样的:

    // Variables for the final sum of all even numbers
    int evensum1,evensum2,evensum3,evensum4;
    if (oneeven < 10){
        evensum1 = oneeven;
    }
    if (twoeven < 10){     
        evensum2 = twoeven;
    }
    if (threeeven < 10){    
        evensum3 = threeeven;
    }
    if (foureven < 10){    
        evensum4 = foureven;
    }
    // Determine if the digits have 2 characters (>= 10); if yes, separate them
    else if (oneeven >= 10){
    // Convert each multiplied number to a string to separate them again        
        String char1even = "" + oneeven;
        char sep11 = char1even.charAt(0);
        char sep12 = char1even.charAt(1);
        int val11 = Character.getNumericValue(sep11);
        int val12 = Character.getNumericValue(sep12);
        evensum1 = val11 + val12;
    }
    else if (twoeven >= 10){
        String char2even = "" + twoeven;
        char sep21 = char2even.charAt(0);
        char sep22 = char2even.charAt(1);
        int val21 = Character.getNumericValue(sep21);
        int val22 = Character.getNumericValue(sep22);
        evensum2 = val21 + val22;
    }
    else if (threeeven >= 10){
        String char3even = "" + threeeven;
        char sep31 = char3even.charAt(0);
        char sep32 = char3even.charAt(1);
        int val31 = Character.getNumericValue(sep31);
        int val32 = Character.getNumericValue(sep32);
        evensum3 = val31 + val32;
    }   
    else if (foureven >= 10){
        String char4even = "" + twoeven;
        char sep41 = char4even.charAt(0);
        char sep42 = char4even.charAt(1);
        int val41 = Character.getNumericValue(sep41);
        int val42 = Character.getNumericValue(sep42);
        evensum4 = val41 + val42;
    }
    // Add the separate even digits together
    int finevensum = evensum1 + evensum2 + evensum3 + evensum4;
    System.out.println(finevensum);

最后第二行我有问题。我想做的是得到一个2位数或1位数的第一/第二/第三/数字。根据数字的位数不同,数字的和会有所不同。最后我想把这些数字加起来。我如何将值存储在每个变量中,以便即使在if语句之后也可以使用它们?

当你这样做的时候:

if (foureven < 10){    
        evensum4 = foureven;
}
// Determine if the digits have 2 characters (>= 10); if yes, separate them
else if (oneeven >= 10){

else引用最后的 if。因此,如果foureven < 10(不管oneeven),它将被输入。

你应该这样做:

if (oneeven < 10){
     evensum1 = oneeven;
} else { ... //Note that it's redundant to write oneeven >= 10 

(对其余的if语句执行此操作)

最新更新