幸运总和计数3值总和

时间:2014-07-14 06:35:59

标签: java

给定3个int值,a b c,返回它们的总和。但是,如果其中一个值为13,则它不计入总和,其右边的值不计算。因此,例如,如果b为13,则b和c都不计数。

 public static void main(String args[]){
     Scanner scanner=new Scanner(System.in);
     int a,b,c,s;
     System.out.println("Enter 3 values:");
     a=scanner.nextInt();
     b=scanner.nextInt();
     c=scanner.nextInt();
     s=luckySum(a,b,c);
    }
    public static int luckySum(int a,int b,int c){
            int s = a + b + c;
               if(s<13){
                System.out.println(s);
            }else if(a==13 && b<=13 && c<=13){
                System.out.println("Lucky sum:"+0);
            }else if(a<=13 && b==13 && c<=13){
                System.out.println("Lucky sum:"+0);
            }else if(a<=13 && b<=13 && c==13){
                System.out.println("Lucky sum:"+0);
            }
            else{
                // do nothing
            }

        return s;

    }

}

3 个答案:

答案 0 :(得分:1)

假设从左到右的意思是{a, b, c},那就是为了重构而积极地尖叫:

public static int luckySum (int left, int middle, int right) {
    if (left   == 13) return 0;
    if (middle == 13) return left;
    if (right  == 13) return left + middle;

    return left + middle + right;
}

以下是我所做的更改。    - 删除if/else-if/else代码的意大利面条状混合物。    - 使用体面的变量名称。    - 通过使用多个返回来最小化代码垂直空间以提高可读性。

不要让任何人告诉你最后一点是个坏主意。如果他们这样做,他们就不会理解为什么。多个返回点只有在它们更难以计算出程序流时才会变坏。在像这样的四行函数中,有机会一眼就看不到所有控制流。

答案 1 :(得分:0)

如果b为13且其他值为非零且总和大于13,或者如果其他两个为零则变为13。

int s = a + b + c;

 if(s<13)

这种情况阻止您继续,因为您正在进一步使用else if语句。

使用if(s<=13)可以解决您的问题。

答案 2 :(得分:0)

如果我已正确理解您的问题,您需要一个代码,如果输入的数字中的任何数字是13,而不应该总和,否则它应该正常工作。请尝试以下代码:

   public static void main(String args[])
      {
      Scanner scanner=new Scanner(System.in);
     int a,b,c,s;
     System.out.println("Enter 3 values:");
     a=scanner.nextInt();
     b=scanner.nextInt();
     c=scanner.nextInt();

     if(a==13 || b==13 || c==13) //if any a , b , c is 13 , your sum function called //
            {
               System.out.println("one of value was 13,so no output"); 
            }

     else //else call sum function and get your result value
     { 
     s=luckySum(a,b,c);
     System.out.println("output is"+s);
     }

   }
    public static int luckySum(int a,int b,int c)
        {

            int s = a + b + c;
            return s;    
        }