2011-07-20 555 views
0

如何讓我的程序只使用一個如果語句和一個其他語句結合多個if語句

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

家庭作業的問題... – Kawu

+0

有三種不同的輸出。用一個如果和其他你可以處理兩個。你將需要另一個其他的,如果。 – taskinoor

+1

爲什麼臃腫的代碼轉儲?無論如何,你有三個代碼路徑,所以你需要一些分支兩次這樣或那樣。不過,您可以使用三元條件運算符'?:'將其全部寫入一行。 –

回答

2

這裏使用:

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

似乎在輸出等於
兩個數字相同時爲空。 – Zhianc

+0

當兩個數字相等時它應該輸出什麼? – quaertym

+0

只有世界等同,但當輸入的兩個數字相同時,上面的代碼在另一行顯示** EQUIVALENT **然後** null **。 – 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 ...真的嗎? – Moonbeam

0

試試這個

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

如果不使用三元操作

0

我的想法,避免三元運算符。它分配一個數組,如果數組大小爲負數則捕獲異常。

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 - 請解釋。我已經測試過這個,它工作。 – qbert220

+0

不是downvoter,但是爲這個問題創建一個數組是非常不必要的,無論它是否有效。 – rtheunissen

+0

我並不是說它優雅或高效。這不是我在生產軟件中使用的解決方案。但是,我通常不會僅限於使用一個「if」和一個「else」。這是一個虛假的作業情況,這是一個小說(恕我直言),工作解決方案,所以我真的不明白倒票。 – qbert220

1

的qbert解決一個變種,使用'java.lang.ArithmeticException'並沒有分配內存:

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

另一種解決方案,在我看來比'ArithmeticException'解決方案,我以前提交的好得多:

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

爲了解釋這一點,當'number1'是gt 'number2'時,'i'是否定的。數字的最左邊一位是負值,否則是0。所以我得到了這一點,'i & (1 << 31)'狗屎右邊的31,這給了-1負數,否則0。然後我只需要進行數組查找就可以得到結果。

0

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