首页 文章

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

提问于
浏览
0

我正在使用FXML来创建用户界面 . 有一个TextField可以填写,一个Button可以点击 .

单击按钮时,应读取已填写的文本并将其与List进行比较 .

如果TextField包含的字符数等于List中的值,则应在同一用户界面的“文本”字段中显示某个字符串 .

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");
             }
     }
}

它's not a problem to run the code. The String getInput'的值等于输入文本,但if语句的结果始终是"DOES NOT CONTAIN" . 输入的文本例如是“ 44606 621” .

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

4 回答

  • 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"); 
       } 
    } 
    }
    
  • 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)) {
    
  • 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");
    }
    

    更改输入以匹配List值的字符数会产生一个有效的if语句 .

  • 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;
    }
    

相关问题