使用if语句将String与Arrays.asList值进行比较

时间:2017-10-23 19:40:04

标签: java arrays if-statement fxml

我使用FXML创建用户界面。 有一个可以填写的TextField,还有一个要点击的按钮。

单击按钮时,应读取已填写的文本并与列表进行比较。

如果TextField包含的字符数等于List中的值,则应在同一用户界面的Text字段中显示某个String。

public class FXMLController {

      @FXML TextField input
      @FXML private Text actionContains

      @FXML protected void handleSubmitButtonAction(ActionEvent event) {

             List<String> n1 = Arrays.asList("44606", "44613", "44615", "44619"}

             String getInput = input.getText();

             if(Arrays.asList(n1).contains(getInput)) {
                  actionContains.setText("CONTAINS");
             } else {
                  actionContains.setText("DOES NOT CONTAIN");
             }
     }
}

运行代码不是问题。 String getInput的值等于输入文本,但if语句的结果始终为&#34; DOES NOT CONTAIN&#34;。 输入的文字例如是&#34; 44606 621&#34;。

我已经切断了最后三个字符,以便有一个与List值相等或不相等的字符串(等于而不是包含),但这对结果没有任何作用。

4 个答案:

答案 0 :(得分:2)

那是因为你把它放到arrayList中两次所以而不是arrayList它变成了List的arrayList。

List<String> n1 = Arrays.asList("44606", "44613", "44615", "44619"}


Arrays.asList(n1); <--- makes it into [["44606", "44613", "44615", "44619"]]

更改if条件

 if(Arrays.asList(n1).contains(getInput)) {
...

 if(n1.contains(getInput)) {

答案 1 :(得分:0)

我改变了我的代码:

List<String> n1 = new ArrayList<String>();
    n1.add("44606");
    n1.add("44615");

String getInput = input.getText();
String cutInput = getInput.substring(0,5);

if (n1.contains(cutInput) {
    actionContains.setText("CONTAINS");
} else {
    actionsContains.setText("DOES NOT CONTAIN");
}

更改输入以匹配列表值&#39;字符数导致工作if语句。

答案 2 :(得分:0)

您必须遍历列表并搜索该单词是否包含列表中的任何元素,而不是其他方式。正确的算法是

 public void testW(){
    boolean flag = testContains(Arrays.asList("44606", "44613", "44615", "44619"),"44606621");
    System.out.println(flag);
    if(flag){
        actionContains.setText("CONTAINS");
    } else {
        actionContains.setText("DOES NOT CONTAIN");
    }
}

private boolean testContains(List<String> list, String word){
    for (int i = 0; i < list.size(); i++) {
        if(word.contains(list.get(i))){
            return true;
        }
    }
    return false;
}

答案 3 :(得分:0)

您应该在数组的每个元素中查找字符串,而不是在数组中查找它。

所以用这个替换你的代码

public class FXMLController { 
@FXML TextField input 
@FXML private Text actionContains 
@FXML protected void handleSubmitButtonAction(ActionEvent event) { 
List<String> n1 = Arrays.asList("44606", "44613", "44615", "44619"}
String getInput = input.getText();

for(String s : n1) { 
  if(getinput.contains(s)) { 
      actionContains.setText("CONTAINS"); 
   } else { 
       actionContains.setText("DOES NOT CONTAIN"); 
   } 
} 
}