如果是JSP中的其他(切换案例)

时间:2015-06-27 13:32:08

标签: java string-comparison

在eclipse上用JSP创建一个网站:

选择[i]从前一个网页正确获取为1到5的字符串

每个数字代表一个主题即:如果选择[i] == 1所以sub = Maths

我不能在一个字符串上切换大小写,所以我试过if else ..但是sub总是等于null(声明)??如何让sub取if条件中的值?

  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+"' ");
                }



        }

2 个答案:

答案 0 :(得分: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中打开一个String,而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语句的设计目的。

答案 1 :(得分: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
}