2011-07-20 5 views
0

Comment puis-je faire mon programme utilisez uniquement une instruction if et une autre déclaration?combiner plusieurs déclarations si

import java.io.*; 

public class TwoNum { 
    public static void main(String[] args){ 
     String first=""; 
     String second=""; 

     BufferedReader in=new BufferedReader(new InputStreamReader(System.in)); 

     try{ 
      System.out.print("Input the first number: "); 
      first = in.readLine(); 

      System.out.print("Input the second number: "); 
      second = in.readLine(); 

     } catch(IOException e){ 
      System.out.println("Error!"); 
     } 

     int number1=Integer.parseInt(first); 
     int number2=Integer.parseInt(second); 

     if(number1==number2){ 
      System.out.println("EQUIVALENT"); 
     } 
     if(number1>number2){ 
      System.out.println("GREATER THAN"); 
     } 
     if(number1<number2){ 
      System.out.println("LESSER THAN"); 
     } 
    } 
} 
+0

questions aux devoirs ... – Kawu

+0

Il y a trois sorties différentes. Avec un si et un autre, vous pouvez gérer deux. Vous aurez besoin d'un autre-si. – taskinoor

+1

Pourquoi le vidage de code pléthorique? Quoi qu'il en soit, vous avez trois chemins de code, donc vous aurez besoin de quelques branches d'une manière ou d'une autre. Vous pouvez cependant utiliser l'opérateur conditionnel ternaire '?:' Pour tout écrire sur une ligne. –

Répondre

2

utiliser ici ceci:

import java.io.*; 

public class TwoNum { 

public static void main(String[] args){ 

    String first=""; 
    String second=""; 

    BufferedReader in=new BufferedReader(new InputStreamReader(System.in)); 

    try{ 
     System.out.print("Input the first number: "); 
     first = in.readLine(); 

     System.out.print("Input the second number: "); 
     second = in.readLine(); 

    } catch(IOException e){ 
     System.out.println("Error!"); 
    } 

    int number1=Integer.parseInt(first); 
    int number2=Integer.parseInt(second); 

    String result = null; 

    if(number1 == number2) 
     result = "EQUIVALENT"; 
    else 
     result = (number1 > number2) ? "GREATER THAN" : "LESS THAN"; 

    System.out.println(result); 

    } 
} 
+0

qui semble être sortie EQUIVALENT
null lorsque les deux nombres sont les mêmes. – Zhianc

+0

que devrait-il produire lorsque deux nombres sont équivalents? – quaertym

+0

seulement le monde EQUIVALENT, mais le code ci-dessus affiche ** EQUIVALENT ** puis ** null ** sur une autre ligne lorsque les deux nombres qui ont été entrés sont les mêmes. – Zhianc

3
if(number1==number2){ 

    System.out.println("EQUIVALENT"); 
} 
else if(number1>number2){ 

System.out.println("GREATER THAN"); 
    } 
else{ 
System.out.println("LESSER THAN"); 
} 
+0

@jc david, LOL ... vraiment? – Moonbeam

0

essayer cette

String msg=""; 
msg = ((number1==number2) ? "number1 and number2 is equal" : ((number1>number2) ? "number1 is greater than number2" : "number2 is greater than number1")); 
System.out.println(msg); 

sans si vous utilisez l'opérateur ternaire

0

Mon idée, en évitant l'opérateur ternaire. Il alloue un tableau, en attrapant l'exception si la taille du tableau est négative.

import java.io.*; 

public class TwoNum { 
    public static void main(String[] args){ 
     String first=""; 
     String second=""; 

     BufferedReader in=new BufferedReader(new InputStreamReader(System.in)); 

     try{ 
      System.out.print("Input the first number: "); 
      first = in.readLine(); 

      System.out.print("Input the second number: "); 
      second = in.readLine(); 

     } catch(IOException e){ 
      System.out.println("Error!"); 
     } 

     int number1=Integer.parseInt(first); 
     int number2=Integer.parseInt(second); 

     try { 
      int c[] = new int[number2-number1]; 
      if(number1==number2){ 
       System.out.println("EQUIVALENT"); 
      } else { 
       System.out.println("LESSER THAN"); 
      } 
     } 
     catch (Exception e) { 
      System.out.println("GREATER THAN"); 
     } 
    } 
} 
+0

@downvoter - veuillez expliquer. J'ai testé cela et ça fonctionne. – qbert220

+0

Pas le downvoter, mais il est très inutile de créer un tableau pour ce problème, que cela fonctionne ou non. – rtheunissen

+0

Je ne prétends pas que c'est élégant ou efficace. Ce n'est pas une solution que j'utiliserais dans un logiciel de production. Mais je ne suis normalement pas limité à utiliser seulement un "si" et un "autre". C'est une situation de devoirs artificiels et c'est une nouvelle solution de travail (à mon humble avis), donc je ne comprends vraiment pas le vote à la baisse. – qbert220

1

Une variante de solution qbert, en utilisant 'java.lang.ArithmeticException' et sans allouer de la mémoire:

try { 
    1/(number2-number1); 

    if(number1 > number2){ 
    System.out.println("GREATER THAN"); 
    } else { 
    System.out.println("LESSER THAN"); 
    }  
} 
catch (ArithmeticException e) { 
    System.out.println("EQUIVALENT"); 
} 
1

Une autre solution, à mon avis, beaucoup mieux que la solution 'ArithmeticException' je l'ai déjà présenté:

String res; 
int i = number2 - number1; 
if (i == 0) { 
    res = "EQUIVALENT"; 
} else { 
    String RES[] = { "GREATER THAN", "LESSER THAN" }; 
    int j = (i & (1 << 31)) >> 31; 
    res = RES[j+1]; 
} 
System.out.println(res); 

Pour expliquer cela un peu, lorsque 'number1' est gt 'number2', 'i' est négatif. Le bit le plus à gauche d'un nombre est 1 lorsqu'il est négatif, 0 sinon. Donc, je reçois ce bit, avec 'i & (1 << 31)' merde à droite de 31, ce qui me donne -1 pour un nombre négatif, 0 sinon. Et puis je dois seulement faire la recherche de tableau pour obtenir le résultat.

0

String result = (number1==number2) ? "EQUIVALENT" : ((number1 > number2) ? "GREATER THAN" : "LESS THAN");