2011-06-20 303 views
1

我在这里有这个函数,它将一个API调用汇编到eBay。它曾经只与一个EbayKeys.appid一起工作,现在需要包括第二个。Java EE if/else语句不起作用

参数String appidGet从另一个使用request.getParameter(“token”)的函数传递。我已经将值输出到catalina.out中,并且值被传递,但是if/else语句不会被执行,并且它不会将值附加到字符串中。

我试了几个不同的值,并没有一个工作。我对Java完全陌生,不知道我在这里做错了什么。

public String getSearchUrl(String qurl, List<String> excludes, String appidGet) throws UnsupportedEncodingException { 
    String query = buildQuery(qurl, excludes); 
    String safequery; 
    try { 
     safequery = URLEncoder.encode(getQuery(),charset); 
     StringBuffer apicall = new StringBuffer(); 
     apicall.append(EbayKeys.endpoint).append("?").append("OPERATION-NAME=findItemsByKeywords") 
     .append("&SERVICE-VERSION=").append(EbayKeys.version); 

     //Does not execute 
     if (appidGet == "one") { 
      apicall.append("&SECURITY-APPNAME=").append(EbayKeys.appid1); 
     }   
     else if (appidGet == "two") { 
      apicall.append("&SECURITY-APPNAME=").append(EbayKeys.appid2); 
     } 

     System.out.println(getClass().getName() + " " 
       + Utils.getTime() 
       + " APP ID = " + appidGet); 
     apicall.append("&GLOBAL-ID=").append(EbayKeys.globalid) 
     .append("&keywords=").append(safequery) 
     .append("&sortOrder=StartTimeNewest&paginationInput.entriesPerPage=2") 
     .append(query); 
     return apicall.toString(); 
    } catch (UnsupportedEncodingException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    return ""; 
} 

感谢您的任何帮助提前。

回答

6

经典的错误。当比较字符串,使用.equals()

if (appidGet.equals("one")) { 
     apicall.append("&SECURITY-APPNAME=").append(EbayKeys.appid1); 
    }   
    else if (appidGet.equals("two")) { 
     apicall.append("&SECURITY-APPNAME=").append(EbayKeys.appid2); 
    } 

对于非原语,==测试如果两个对象相同对象(同一存储器地址),而.equals()测试,如果他们“似乎相同的”(类 - 具体实施)

5

您应该使用

appidGet.equals("one") 

appidGet.equals("two") 
2

比较字符串与.equals()

==在Java通过对象引用进行比较,因为字符串是在Java对象。

尝试appidGet.equals("one")

1

经典java错误。

在java中,“==”比较对象的引用,所以使用equals而不是==。