2015-08-14 107 views
-3

我有一個開關和if語句,它們是等價的。他們都應該採取一個字符串,如果是的話做一些事情,如果沒有做另一件事。 if語句不管輸入什麼都不做任何事情,但switch語句會做。這是爲什麼?如果和Switch切換同一個任務,結果不一樣?

這裏的if語句:

if (yes.equals("yes")){ 
    System.out.println ("Enter your first number"); 
    fnum = x.nextDouble(); 
    System.out.println ("Enter your second number"); 
    snum = x.nextDouble(); 
    calculations(fnum, snum); 
} 
if (yes.equals("No")) { 
    System.out.println("okay, bye then!"); 
} 

下面是開關:

switch (yesno){ 
    case "yes": 
     System.out.println ("Enter your first number"); 
     fnum = x.nextDouble(); 
     System.out.println ("Enter your second number"); 
     snum = x.nextDouble(); 
     calculations(fnum, snum); 
     break; 
    case "no": 
     System.out.println("k bye"); 

這不是重複的,因爲這個問題是if語句。我的交換機被標記爲「重複」。

+4

1)你的交換機需要一個'break'語句。 2)您的「創意」使用代碼縮進需要改進。 –

+0

我懷疑他們是否真的「進入」了。調試並逐步完成。 – chrylis

+0

你對break語句是正確的(我在編輯時添加了),但爲什麼if語句不工作? –

回答

2

我有一個開關和一個if語句,它們是等價的。

其實,他們是不等價的:

  • if版本檢查"yes""No"。但交換版本檢查"yes""no"。由於在這兩種情況下檢查都區分大小寫,因此如果輸入爲"no" ...或"No",您將得到不同的結果。

  • 這兩個版本檢查不同的變量;即yesyesno。這可能會有所不同,具體取決於上下文。

這些的任可解釋你所看到的不同的行爲。


我還以爲是和YESNO將是平等的,但他們不是......?任何想法爲什麼?

那麼,顯然名稱是不同的,所以他們不能是相同的變量。

但是,它們是不同變量的事實並不一定意味着它們具有不同的值。確定代碼行爲的

當然,如果yesno包含適當"yes""no"價值和yes包含其他的東西(如""),那麼這會給你所觀察的行爲。 (顯然這是一個假設的診斷,如果你想得到更具體的答案,請給我們看相關的代碼。)

相關問題