2015-12-21 31 views
-2

我正在寫這個代碼給你的程序一個名字。if if else中的死分支

Java告訴我,如果變量「isACoolGuy」爲false,那麼聲明中的else就不會被使用。

if (isACoolGuy = true){ 
     System.out.println("Thank you for this name... "+ name); 
    }else if(isACoolGuy = false){  
     System.out.println("Okay im changing my name since you are an idiot"); 
     name = name = "jack"; 
     System.out.println("My name is "+ name + " now"); 

之前有一個switch語句應該將「isACoolGuy」布爾值更改爲false。

case "name": 
      System.out.println("You are an a******"); 
      isACoolGuy = false; 
      break; 
+3

您使用賦值運算符'='你如果條件時,你應該使用一個比較操作符''==。 – dnault

+1

dnault的評論也適用於elseif – TriHard8

+2

這是(一個原因)爲什麼你不應該顯式比較布爾值true或false。如果您使用過'if(isACoolGuy)'和'else if(!isACoolGuy)',那麼您不會意外創建該問題。 –

回答

2

你如果是錯的

if (isACoolGuy == true){ 
     System.out.println("Thank you for this name... "+ name); 
    }else if(isACoolGuy == false){ 
     System.out.println("Okay im changing my name since you are an idiot"); 
     name = "jack"; 
     System.out.println("My name is "+ name + " now"); 

或更好

if (isACoolGuy){ 
     System.out.println("Thank you for this name... "+ name); 
    }else if(!isACoolGuy){ 
     System.out.println("Okay im changing my name since you are an idiot"); 
     name = "jack"; 
     System.out.println("My name is "+ name + " now"); 

,並在你的情況下,最正確的方法是把否則,如果跳過和單取代它還有這樣

if (isACoolGuy){ 
     System.out.println("Thank you for this name... "+ name); 
    }else { 
     System.out.println("Okay im changing my name since you are an idiot"); 
     name = "jack"; 
     System.out.println("My name is "+ name + " now"); 

而且一些理論

isACoolGuy = true意味着分配真正價值isACoolGuy變量。 在if中使用它總是返回true isACoolGuy == true檢查變量是否爲ACoolGuy是否具有真實值。 這是比較 -

內的,如果你可以跳過比較布爾值,因爲如果有以下格式

if(true) 
{ 

} 

所以如果(isACoolGuy)類似,如果(isACoolGuy ==真)

+0

非常感謝!我完全忘記了== vs =的事情。並感謝你的技巧和提示,如果他們給我帶來很多麻煩。 –

1

不是檢查它是否爲true,而是將isACoolGuy分配給true,因此它總是計算爲true。

if (isACoolGuy = true){ 

而是使用

if (isACoolGuy == true){ 

更好地利用: -

if (isACoolGuy) 
+3

如果你打算修復,你應該修復elseif。 – TriHard8

+1

爲什麼在這個答案downvote? – Robert

+1

1)'iif'; 2)'if(isCoolGuy){'會更好。 (雖然我自己沒有DV) –

0

檢查條件應該使用==而不是=它用於分配,就像這樣if(isACoolGuy == true)
嘗試刪除第二個條件if(isACoolGuy == false)不necessasry,它足有關鍵字else這樣的:

isACoolGuy = true; 
    ... 
    if (isACoolGuy){ // the positive control 
    System.out.println("Thank you for this name... "+ name); 
}else{ // otherwise negative 
    ... 
    } 
+0

尊敬的@Downvoter爲什麼這些DV? – Abdelhak

+1

我沒有downvote,但'if(condition == true)'是不好的風格。只要使用'if(condition)'。 –

+0

@Klitos Kyriacou我這麼認爲,但OP寫這樣寫 – Abdelhak