2014-07-14 4 views
-2

Avec 3 valeurs int, a b c, renvoient leur somme. Cependant, si l'une des valeurs est 13 alors elle ne compte pas vers la somme et les valeurs à sa droite ne comptent pas. Donc, par exemple, si b est 13, alors b et c ne comptent pas.Somme cumulée 3 valeurs sum

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

Alors, que ce code fait? Quelle est l'erreur? –

+0

Quelle est votre question? – Henry

Répondre

1

En supposant gauche à droite signifie {a, b, c}, qui crie positivement pour refactoring:

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; 
} 

Voici les changements que j'ai fait. - Retirer le mash-mash spaghetti-like du code if/else-if/else. - Utilisez des noms de variables correctes. - Minimise l'espace vertical du code pour plus de lisibilité en utilisant plusieurs retours.

Et ne laissez pas quelqu'un vous dire que le dernier point est une mauvaise idée. S'ils le font, ils ne comprennent pas pourquoi. Les points de retour multiples ne sont mauvais que s'ils compliquent le déroulement du programme. Dans une fonction de quatre lignes comme celle-là, il y a zéro chance de ne pas voir tout le flux de contrôle d'un seul coup d'œil.

0

Si b est 13 et que d'autres valeurs sont non nulles, la somme devient supérieure à 13, ou 13 si les deux autres sont égales à zéro.

int s = a + b + c;

if(s<13) 

Cette condition vous empêche d'aller de l'avant, que vous utilisez else if d'autres déclarations.

L'utilisation de if(s<=13) résoudra votre problème.

0

Si je comprends bien votre question, vous voulez un code que si un nombre est de 13 en chiffres saisis que cela ne devrait pas faire la somme, sinon il devrait fonctionner properly.Try ce code:

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;  
     } 
Questions connexes