【问题标题】:Java EE if/else statement not workingJava EE if/else 语句不起作用
【发布时间】:2011-06-20 21:54:12
【问题描述】:

我在这里有这个函数,它组装了一个对 eBay 的 API 调用。它过去只能与一个 EbayKeys.appid 一起使用,现在需要包含第二个。

参数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 "";
}

提前感谢您的帮助。

【问题讨论】:

    标签: java jakarta-ee


    【解决方案1】:

    经典错误。比较字符串时,使用.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() 测试它们是否“看起来相同”(特定于类的实现)

    【讨论】:

      【解决方案2】:

      你应该使用

      appidGet.equals("one") 
      

      appidGet.equals("two") 
      

      【讨论】:

        【解决方案3】:

        .equals()比较字符串

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

        试试appidGet.equals("one")

        【讨论】:

          【解决方案4】:

          经典的java错误。

          在java中,“==”比较对象的引用,所以用equals代替==。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2023-03-13
            • 2015-05-05
            • 1970-01-01
            • 1970-01-01
            • 2022-01-16
            • 2014-09-15
            • 1970-01-01
            相关资源
            最近更新 更多