2014-05-07 50 views
2

这是我的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> 

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

+2

如果你遵循MVC范例,在视图中添加业务逻辑并不是最好的方法... – Teo

回答

3

这是因为您的basic变量只有一个值超出了界限,因为您根据result.length增加了i。您可能需要使用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]); 
     } 
    } 
} 
+0

是的我知道,我怎么才能通过更改代码来获得我的要求 – tajMahal

+1

谢谢,它的工作正常。 – tajMahal

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> 

只有一个元素,以便使用基本[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]); 
      } 
     } 
    %> 
+0

如果我有String [] basic = {“我的”,“IND”,“澳大利亚”,“NZ”}那么我怎么能比较? – tajMahal

+1

似乎像recaptcha也建议相同... –

+1

thak你Santino – tajMahal

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,而不是平等的。

相关问题