2010-10-31 35 views
0

J'ai commencé avec le code suivant:Réduire le code en référence à lecture/opérations d'écriture

class Vereinfache2_edit { 

    public static void main(String[] args) { 

     int c1 = Integer.parseInt(args[0]); 
     int c2 = Integer.parseInt(args[1]); 
     int c3 = Integer.parseInt(args[2]); 

     /* 1 */if (c2 - c1 == 0) { 
      /* 2 */if (c1 != c3) { 
       c3 += c1; 
       /* 4 */System.out.println(c3); 
       /* 5 */c3 *= c2; 
       /* 6 */} 
     } 

     /* 7 */if (c1 == c3) 
      /* 8 */if (c1 - c2 == 0) 
      /* 9 */{ 
       c3 += c1; 
       /* 10 */System.out.println(c3); 
       /* 11 */c3 *= c1; 
       /* 12 */if (c1 < c2) 
        c2 += 7; 
       /* 13 */else 
        c2 += 5; 
       /* 14 */} 

     /* 15 */System.out.println(c1 + c2 + c3); 
    } 

} // end of class Vereinfache2 

... et je me suis retrouvé avec:

class Vereinfache2 { 

     public static void main(String [] args) { 

      int c1 = Integer.parseInt(args[0]) ; 
      int c2 = Integer.parseInt(args[1]) ; 
      int c3 = Integer.parseInt(args[2]) ; 

/* 1 */  
    /* 2 */  if (c2 == c1 && c1 != c3){ 
    /* 4 */    System.out.println(c3 += c2) ; 
    /* 5 */    c3 = c3 * c2 ; 
    /* 6 */  } 
/* 7 */  
    /* 8 */  if (c2 == c1 && c1 == c3){ 
    /* 10 */   System.out.println(c3 *= 2) ; 
    /* 11 */   c3 = c3 * c2 ; c2 = c2 + 5 ; 
    /* 14 */  } 


/* 15 */  System.out.println(c1+c2+c3) ;  
     }   

} // end of class Vereinfache2 

Voyez-vous quoi que ce soit d'autre comme mort ou commutable code?

Merci pour toutes les réponses. J'ai fini avec cette version de travail:

class Vereinfache2 { 

     public static void main(String [] args) { 

      int c1 = Integer.parseInt(args[0]) ; 
      int c2 = Integer.parseInt(args[1]) ; 
      int c3 = Integer.parseInt(args[2]) ; 

/* 1 */  if(c2 == c1){ 
    /* 2 */  if (c1 != c3){ 
         c3 += c2; 
    /* 4 */   System.out.println(c3) ;   
    /* 6 */  }else{ 
         c3 *= 2; 
    /* 10 */   System.out.println(c3) ; 
    /* 14 */  } 
        c3 *= c2; c2 += 5; 
       } 

/* 15 */  System.out.println(c1+c2+c3) ;  
     }   

} // end of class Vereinfache2 

Répondre

2

Pour votre première version:

 if (c2 == c1) { 
     if (c1 != c3) { 
      c3 += c1; 
      System.out.println(c3); 
      c3 *= c2; 
     } else { 
      c3 += c1; 
      System.out.println(c3); 
      c3 *= c1; 
      if (c1 < c2) 
      c2 += 7; 
      else 
      c2 += 5; 
     } 
     } else if (c1 < c2) 
      c2 += 7; 
     else 
      c2 += 5; 
    } 
    System.out.println(c1 + c2 + c3); 
    } 
} 

et pour la deuxième version:

  if (c2 == c1) 
       if(c1 != c3){ 
       System.out.println(c3 += c2) ; 
       c3 = c3 * c2 ; 
       } else { 
       System.out.println(c3 *= 2) ; 
       c3 = c3 * c2 ; c2 = c2 + 5 ; 
       } 
      }   

De cette façon, vous ne faites pas 2 fois le même test.

+0

@LucaB: Les travaux sur l'original, l'amélioration de l'un est vissé un peu. D'où '(c3 * = 2)' est arrivé, se référer à l'original. –

+0

Je vois, j'ai pensé quand l'OP a dit "... et j'ai fini par:" supposé que c'était correct. – lbedogni

+0

il a la même sortie .. ce qui est incorrect là-bas? –

1
/* 4 */    System.out.println(c3 += c2) ; 

devrait être

/* 4 */    System.out.println(c3 += c1) ; 

Je crois, après avoir regardé votre version originale. Et voici ma version.

public static void main(String[] args) { 

    int c1 = Integer.parseInt(args[0]); 
    int c2 = Integer.parseInt(args[1]); 
    int c3 = Integer.parseInt(args[2]); 

    if (c2 == c1) { 
     c3 += c1; 
     System.out.println(c3); 
     if (c1 != c3) { 
      c3 *= c2; 
     } else { 
      c3 *= c1; 
      c2 += 5; 
     } 
     System.out.println(c1 + c2 + c3); 
    } 
} 

OMI, ce ne est pas une bonne idée d'affecter quoi que ce soit à qui que ce soit dans sout.

+0

qui est bon, mais je pense qu'il n'a pas d'importance puisque c1 = c2 –

2

Que pensez-vous de cela? vous n'avez pas besoin de vérifier c1, l'égalité c2 deux fois et vous pouvez éviter de vérifier c1, l'égalité c3 une fois ..

public static void main(String[] args) { 

     int c1 = Integer.parseInt(args[0]); 
     int c2 = Integer.parseInt(args[1]); 
     int c3 = Integer.parseInt(args[2]); 

     if (c2 == c1) { 
     int c4 = c3 + c1; 
     System.out.println(c4); 
     if (c1 == c3) { 
      c2 += 5; 
     } 
     c3 = c4 * c1; 

    } 

     System.out.println(c1 + c2 + c3); 
    } 

EDIT: Edité pour correspondre avec la version originale plutôt que avec votre version fini.

+0

En quoi est-ce différent de ma réponse? – lbedogni

+0

@LucaB: Vous l'avez montré mais ne l'avez pas expliqué au début. :) –

+0

@LucaB - ok..i n'a pas regardé votre réponse pendant que je posté ceci..et effectivement regardé après que j'ai posté ma réponse ....si je ne me trompe pas, vous aviez 'else if (c1 == c3)' dans votre réponse avant ... que vous avez édité à autre chose maintenant et fait que votre réponse ressemble à la mienne..et comme @Adeel mentionné j'ai jeté quelques mots là .. –

1

Utilisez pour c3 = c3 * c2;: sténographies c3 *= c2;