2014-07-04 167 views
0

我是一名初學Java的學生。這是我正在做的一般想法。如何在Do-While循環中編寫嵌套的if語句?

我有一個用戶可以通過輸入相應的數字來選擇的東西列表。輸入一個整數後,該項旁邊的字符串將打印爲YES。如果他們認爲他們不再需要,他們必須再次輸入相同的號碼,然後字符串應該更改爲NO。我的嵌套循環技術允許這種改變,但是在閱讀下一個if語句後馬上改變它。我一直在爲此工作很長時間。任何人都可以請推動我在正確的方向來識別這個問題?

 do 
    { 
     int num=input.nextInt(); 

     if (num == 7) 
     {    
      if(s.equals("NO")) //corresponding string 
      { 
       s = "YES"; 
      } 
      if(s.equals("YES")) //same corresponding string 
      { 
       s = "NO"; 
      } 
     } 

    //similar if statements for different conditions 
    //similar if statements for different conditions 


    }while(myBoolean()==true); 
+0

使用else if block。if(something){...} else if(something else){...}'您的代碼缺少'else'我認爲 –

回答

0
do 
{ 

只需添加「if」語句之間的「else」一詞。在你的例子中,當s是「NO」時,你將它改爲「YES」。因此,當你點擊第二個「if」語句時,s是「YES」。

更好的是,代替測試兩個值「YES和‘NO’,對它們中的一個只是試驗和假設相反的情況下,如果該測試失敗

例如: 做 { INT NUM = input.nextInt();

if (num == 7) 
    {    
     if(s.equals("NO")) //corresponding string 
     { 
      s = "YES"; 
     } 
     else // <--- This is the only change I made. 
     { 
      s = "NO"; 
     } 
    } 

//similar if statements for different conditions 
//similar if statements for different conditions 


}while(myBoolean()==true); 
+0

哇,那太簡單了!非常感謝你!但現在出於某種原因,我必須輸入一個數字,然後再次循環......你認爲我的布爾值有什麼問題嗎? – user3806226

1

你似乎缺少一個else語句。

if(s.equals("NO")) //corresponding string 
{ 
    s = "YES"; 
} else if(s.equals("YES")) //same corresponding string 
{ 
    s = "NO"; 
} 

,或者如果你想縮短事情有點:

s = s.equalsIgnoreCase("NO") ? "YES" : "NO"; 
0

你應該做的是使用else if語句,像這樣

if (num == 7) 
{    
    if(s.equals("NO")) 
    { 
     s = "YES"; 
    } 
    else if(s.equals("YES")) 
    { 
     s = "NO"; 
    } 
} 

如果第一if語句是true,它將跳過else if聲明。如果if語句是false,它將讀取else if語句。您也可以有多個else if語句,像這樣

if(boolean) 
{ 
    .... 
} 
else if(another boolean) 
{ 
    .... 
} 
else if(some other boolean) 
{ 
    .... 
} 

如果if聲明,所有else if聲明false,你可以添加一個else語句,該語句將被讀

if(boolean) 
{ 
    .... 
} 
else if(another boolean) 
{ 
    .... 
} 
else 
{ 
    .... 
} 
+0

謝謝!現在的問題是,它可以將它從yes更改爲no,但是如果不重新啓動prog,我無法將其更改回yes ram – user3806226