2012-10-22 200 views
0

問題是要寫段落5個不同的時間。每個段落都有不同的籠號和相應的動物。所以籠子1有一隻獅子,籠子2有一隻老虎。問題是我不知道如何將同一段落中不同的對應動物的籠號結合起來。
開關語句

我不知道如何在段落的第二行輸入switch語句。我試着寫println(「這個籠子裏拿着一個」+ i);但Eclipse給了我一個錯誤。我如何將變量n和i同時併入同一段中?

import acm.program.*; 

public class ZooAnimals extends ConsoleProgram { 
    private static final int START = 1; 

    public void run(){ 
     for (int n = START; n <=5; n++) { 
      println("This animal is in cage" + n); 
      println("This cage holds a "); <---- type of animal goes in here. 
      println("Wild animals are very dangerous."); 
     }  

     for(int i = START; i<=5; i++) { 
       switch(i) { 
        case 1: println("lion"); 
        case 2: println("tiger"); 
        case 3: println("elephant"); 
        case 4: println("snakes"); 
        case 5: println("hippo"); 
       }     
     } 

    } 
} 
+3

什麼是錯誤?你沒有用過休息;每個案件後! –

+0

oops。我在我的代碼中添加了用於作業的休息時間。我忘了在這裏添加它們。如果我嘗試寫println(「這個籠子裏有一個」+ i); Eclipse給了我一個「我無法解決變量」的錯誤。 –

+0

確定只是在每次編輯後保存你的程序。除非保存,否則eclipse不會移除錯誤消息! –

回答

3

我會寫像這樣一個小方法:

public String getAnimal(int cage) 
{ 
    switch(cage) { 
      case 1: return "lion"; 
      case 2: return "tiger"; 
      case 3: return "elephant"; 
      case 4: return "snakes"; 
      case 5: return "hippo"; 
      default: return "Animal Not Found!"; 
      }  

} 

我然後將替換此代碼:

for (int n = START; n <=5; n++) { 
    println("This animal is in cage" + n); 
    println("This cage holds a ");  <-----------type of animal goes in here. 
    println("Wild animals are very dangerous."); 
      } 

與此:

for (int n = START; n <=5; n++) { 
    println("This animal is in cage" + n); 
    println("This cage holds a " + getAnimal(n));  <-----------type of animal goes in here. 
    println("Wild animals are very dangerous."); 
      } 
+0

我想你的意思是println(「這個籠子裏有一個」getAnimal(n)); –

+0

@BhavikShah:是的,你是對的,對不起我的壞。現在應該修好了。 – npinti

+0

謝謝。我一定會嘗試你的建議。 –

0

如果您要打印我,如您詢問您會得到的句子:'This cage holds a 1'。我懷疑這不是你所追求的。相反,創建一個變量來保存動物的名稱並在switch語句中指定它的值。之後,你可以做你的println聲明。

這在我看來就像一個家庭作業,所以我會離開你弄清楚如何實現準確:)

+0

是的,這是一項家庭作業。謝謝你的提示。 –

1

我會用一個數組

public class ZooAnimals extends ConsoleProgram { 
    String[] animals = "none,lion,tiger,elephant,snake,hippo".split(","); 

    public void run() { 
     for (int n = START; n < animals.length; n++) { 
      println("This animal is in cage" + n); 
      println("This cage holds a " + animals[n]); 
      println("Wild animals are very dangerous."); 
     } 

     for (int i = START; i < animals.length; i++) { 
      println(animals[i]); 
     } 
+0

謝謝。我認爲數組在後面的章節中有介紹,所以到目前爲止我還沒有了解它們。 –

0

我認爲你正在嘗試做這個

import acm.program.*; 

public class ZooAnimals extends ConsoleProgram { 

public void run(){ 

for (int n = START; n <=5; n++) { 
    println("This animal is in cage" + n); 
    println("This cage holds a ");  <-----------type of animal goes in here. 

      switch(n) { 
      case 1: println("lion");break; 
      case 2: println("tiger");break; 
      case 3: println("elephant");break; 
      case 4: println("snakes");break; 
      case 5: println("hippo");break; 
       }     

println("Wild animals are very dangerous."); 
       } 

private static final int START = 1; 

}

+0

爲了格式化的緣故,我會用'print ...'替換'println(「這個籠子裏有一個」)''。這將確保句子和動物名稱連續出現。 – npinti

+0

好的謝謝。我一定會試一試。 –

0

刪除第二個爲週期,在開關使用的n,而不是我,並添加破進入交換機的每個分支。

即使是最好的將是正確的順序,並不僅僅是使用「N」爲指標,以獲得正確的動物名稱

0

您應該使用print方法,而不是println創造動物的含數組名稱。請參閱switch之前的行。

和,使用開關時使用break

for (int n = START; n <=5; n++) 
{ 
    println("This animal is in cage" + n); 
    print("This cage holds a "); 

    switch(n) 
    {    
     case 1: println("lion"); break;   
     case 2: println("tiger"); break;    
     case 3: println("elephant"); break;   
     case 4: println("snakes"); break;   
     case 5: println("hippo"); break; 
     default: println("unknown"); break; // good practice to add default case. 
    } 
} 

println("Wild animals are very dangerous.");    
+0

謝謝。另一位用戶提出了同樣的問題。我一定會嘗試。 –

0

你可以,如果別人做一兩件事,而不是swicth使用,並從那裏

for(int n = START;n<=5;n++){      
     String animal=type(); 
     println("This animal is in cage" + n); 
     println("This cage holds a "+animal);  <-----------type of animal goes in here. 
     println("Wild animals are very dangerous."); 
} 

for(int i = START; i<=5; i++) { 
     switch(i) { 
      if(i==1){ 
       String type() 
        return "tiger"; 
      }else if(i==2){ 
        String type() 
        return "lion"; 
      } 

     }     
    } 

調用它的功能和返回值我希望這將... N是它可以比很多更美好這個解決方案,但現在這應該工作休息你可以修改。 好運

+0

感謝您的回答。 –

+0

此答案無效。這在語法上是不正確的,現在是一種混亂。首先,你需要在你的方法中使用「花括號」,即使它是單行的。其次,你不能在另一個方法中定義一個方法。在我看來,這個答案只會使原始代碼變得更糟。 –

0
for (int n = START; n <=5; n++) { 
    println("This animal is in cage" + n); 
    println("This cage holds a ");  <-----------type of animal goes in here. 

     switch(n) { 
     case 1: println("lion"); 
     case 2: println("tiger"); 
     case 3: println("elephant"); 
     case 4: println("snakes"); 
     case 5: println("hippo"); 
     }     

    println("Wild animals are very dangerous."); 

}

我不知道我理解正確你的問題。上面的代碼可以幫助你嗎?

+0

是的我試圖嘗試所有建議的答案,看看它是否適用於我的問題。謝謝。 –