2014-09-30 43 views
-2
class bool { 

    public static void main(String arg[]) { 

     int n = 2; 

     boolean b = (n % 2 == 0); 

     System.out.print(b); 

     String s = String.valueOf(b); 

     switch (s) { 

      case true: 

       System.out.println("even"); 

       break; 

      default: 
       System.out.println("odd"); 

       break; 

     } 


} 

我得到的incompetible 型PLZ幫助problm我要打印數是奇數或偶數不循環。檢查wheather一個數字是偶數或奇數不使用循環

+0

你不需要循環。你已經解決了它,只需睜開你的眼睛,不要做無用的轉換......你認爲以下線意味着什麼?布爾值b =(n%2 == 0); – Alboz 2014-09-30 17:53:05

+0

在switch語句中使用它之前,爲什麼要將布爾值轉換爲字符串?你的switch語句檢查true或false,這是布爾值,所以你不需要把它轉換成字符串。 – forgivenson 2014-09-30 18:12:29

回答

0

無法在Java 6或更低版本中打開String值。你想要的是

if (b) { 
    System.out.println("even"); 
} else { 
    System.out.println("odd"); 
} 

String s=String.valueOf(b);是沒用的。

還可以考慮爲變量使用更多的描述性名稱。 b在代碼邏輯中沒有提供關於這個變量意味着的信息。 isEven例如是一個更好的名字,看看現在的代碼是如何更具可讀性:

if (isEven) { 
    System.out.println("even"); 
} else { 
    System.out.println("odd"); 
} 

我想這樣做沒有任何的if else,沒有任何環

奇怪要求...它只是使代碼更少可讀和更臃腫。當有超過2個可能的值時,通常需要switch。總之:

final int result = n % 2; 
switch (result) { 
case 0: 
    System.out.println("even"); 
    break; 
default: 
    System.out.println("odd"); 
} 
+0

其實他並不需要去那麼遠.. – Alboz 2014-09-30 17:53:47

+0

@Alboz我對這個錯誤的理解是什麼,這是真正的問題。無論如何,我擴大了我的答案。 – m0skit0 2014-09-30 17:57:02

+0

我想這樣做沒有任何其他和沒有任何循環 – 2014-09-30 18:02:27

1

你得到不兼容的類型,因爲你正試圖使用​​一個boolean情況標籤true當開關表達式是一個Strings。你甚至不需要String;只需使用b本身。 boolean s不允許作爲開關表達式,但如果您擁有的是boolean,則不需要switch。只需使用if聲明。

1

的情況下使用的字符串然而,在每一種情況下,你使用的是布爾變量:

public static void main(final String arg[]) { 
    final int n = 2; 
    final boolean b = n % 2 == 0; 
    System.out.print(b); 
    System.out.println(b ? "even" : "odd"); 
} 
+0

在這裏我不想要使用,如果其他語句 – 2014-09-30 18:00:09

+0

我修改了帖子,以改變如果開關 – rafalopez79 2014-09-30 18:02:45

+0

@ rafalopez79你不能切換布爾值。 – Alboz 2014-09-30 18:08:57

0

不知道我理解的問題正確,並從您的意見看起來你不想使用if/else或switch - 你可以選擇使用包裝器。

IntWrapper wrapper = new IntWrapper(n); 
System.out.println("Is Even ? "+wrapper.isEven()); 
System.out.println("Is Odd ? "+wrapper.isOdd()); 

class IntWrapper 
{ 
    private int x; 
    public IntWrapper(int x) 
    { 
     this.x = x; 
    } 

    public boolen isEven() 
    { 
     return x%2==0; 
    } 

    public boolean isOdd() 
    { 
     return !isEven(); 
    } 
}