2

我正在做一个初学者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);

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

4

1 回答 1

3

当你这样做时:

if (foureven < 10){    
        evensum4 = foureven;
}

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

然后是else最后一个 if。所以它会被输入 if foureven < 10(不管oneeven)。

你应该这样做:

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

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

于 2013-06-08T15:01:41.673 回答