如何比较数组值并在匹配时打印它?

时间:2014-05-07 10:59:49

标签: arrays jsp for-loop

这是我的jsp页面。在这里,我正在比较两个数组值并在两者匹配时打印它:

<body>
    <%
        String[] basic = {"IND"};
        String[] result = {"USA", "UK", "IND", "PAK"};
        for (int i = 0; i < result.length; i++) {
            if (basic[i] == result[i]) {
                out.println(basic[i]);
            }
        }
    %>
</body>

我最终得到一个超出绑定异常的数组。在基本数组中IND必须与结果数组中的每个字符串进行比较。如果匹配,则需要打印该值。我怎么能这样做?

3 个答案:

答案 0 :(得分:3)

这是因为您的basic变量只有一个超出界限的值,因为您根据i递增result.length。您可能需要使用2个循环,具体取决于您必须执行的操作。

String[] basic = {"IND"};
String[] result = {"USA", "UK", "IND", "PAK"};
for (int i = 0; i < basic.length; i++) {
    for (int j = 0; j < result.length; j++) {
        if (basic[i].equals(result[j])) {
            out.println(basic[i]);
        }
    }
}

答案 1 :(得分:3)

<%
    String[] basic = {"IND"};
    String[] result = {"USA", "UK", "IND", "PAK"};
   for (int j = 0; i < basic.length; i++) {
    for (int i = 0; i < result.length; i++) {
        if (basic[j].equalsIgnoreCase(result[i])) {
            out.println(basic[j]);
        }
    }
%>

更好地使用equalsIgnoreCase而不是equals。

答案 2 :(得分:1)

试试这个

 <body>
    <%
        String[] basic = {"IND"};
        String[] result = {"USA", "UK", "IND", "PAK"};
        for (int i = 0; i < result.length; i++) {
            if (basic[0].equals(result[i])) {
                out.println(basic[i]);
            }
        }
    %>
</body>

基本数组中只有一个元素,因此请使用basic [0]。

此外,您需要使用.equals代替==

或者使用2个循环

 <%
        String[] basic = {"IND"};
        String[] result = {"USA", "UK", "IND", "PAK"};
       for (int j = 0; i < basic.length; i++) {
        for (int i = 0; i < result.length; i++) {
            if (basic[j].equals(result[i])) {
                out.println(basic[j]);
            }
        }
    %>