2015-06-27 73 views
1

製作一個網站在JSP上蝕:如果其他在JSP(開關殼體)

選擇[i]的從先前網頁獲取正確從1至5

一個串中的每個數字代表一個對象即:如果選擇[i] == 1那麼sub =數學

我不能切換大小寫的字符串,所以我試過如果其他..但子總是等於空(聲明)?我怎麼能讓子採取在條件的價值?

for (int i = 0; i < select.length; i++) 
     { 

      //// 
      String sub=null; 
      if(select[i]=="1") {sub="Maths";} 
      else if (select[i]=="2") {sub="English";} 
      else if (select[i]=="3") {sub="Physics";} 
      else if (select[i]=="4") {sub="MI";} 
      else if (select[i]=="5") {sub="Software";} 
      //// 

      rs=stmt.executeQuery("SELECT * FROM attends where userid= '"+user_id+"' and cid= '"+select[i]+"' "); 



      if(rs.next())//can not take it 
       { 
       out.println("You can not enroll in '"+sub+"' "); 
       } 
      else//can take it 
       { 
       int countUpdated =stmt.executeUpdate("INSERT INTO enroll (userid, cid) values ('"+user_id+"', '"+select[i]+"')"); 
       out.println("Successfully enrolled in '"+sub+"' "); 
       } 



     } 

回答

1

這是我曾經遇到了,而學習Java的第一個問題:中==窘境VS equals。幸運的是,一旦你明白爲什麼它們不同,很容易正確使用它們。

無論何時處理對象(與這種情況相同),==運算符用於確定兩個變量是否實際指向同一個對象。對象通過Java中的引用進行處理,因此如果object1 == object2,則變量object1實際上引用與變量object2所引用的相同對象。

這不是你想要的。你試圖確定兩個String變量是否指向同一個對象,而不是它們的內容是否相同。對於這一點,你應該使用equals方法,像這樣:

String sub=null; 
if(select[i].equals("1")) {sub="Maths";} 
else if (select[i].equals("2")) {sub="English";} 
else if (select[i].equals("3")) {sub="Physics";} 
else if (select[i].equals("4")) {sub="MI";} 
else if (select[i].equals("5")) {sub="Software";} 

這使您可以測試內容sub是否是相同的字符串「1」,「2」等

我相信你對switch聲明的假設是不正確的:你可以開啓一個Java中的字符串,並且equals方法在底層使用。因此,像這樣:

String sub; 
switch (select[i]) { 
    case "1": 
    sub = "Maths"; 
    break; 
    case "2": 
    sub = "English"; 
    break; 
    case "3": 
    sub = "Physics"; 
    break; 
    case "4": 
    sub = "MI"; 
    break; 
    case "5": 
    sub = "Software"; 
    break; 
    default: 
    sub = null; 
    break; 
} 

可能是可取的,因爲這是switch報表設計。

+0

如果其他條件正確..謝謝 – CodeX

0

試試這個像

switch(select[i]) { 
      case "1": 
       sub="Maths"; 
       break; 
      case "2": 
       sub="English"; 
       break; 
case "3": 
       sub="Physics"; 
       break; 
case "4": 
       sub="MI"; 
       break; 
case "5": 
       sub="Software"; 
       break; 
default: 
      sub=""; 
      break 
} 
+0

給出了錯誤HTTP狀態500 - 無法編譯JSP的類..不能僅在枚舉和int變量的字符串上輸入大小寫 – CodeX

+0

@CodeX從Java 7開始,可以打開字符串。請參閱此主題上的[Oracle文檔](https://docs.oracle.com/javase/8/docs/technotes/guides/language/strings-switch.html)。你在服務器上使用了哪個JDK? – vallismortis