Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将字符串与Arrays.asList值与if语句进行比较_Java_Arrays_If Statement_Fxml - Fatal编程技术网

Java 将字符串与Arrays.asList值与if语句进行比较

Java 将字符串与Arrays.asList值与if语句进行比较,java,arrays,if-statement,fxml,Java,Arrays,If Statement,Fxml,我正在使用FXML创建一个用户界面。 有一个文本字段可以填写,还有一个按钮可以点击 单击按钮时,应读取已填写的文本并与列表进行比较 如果文本字段包含与列表中的值相等的字符,则应在同一用户界面的文本字段中显示特定字符串 public class FXMLController { @FXML TextField input @FXML private Text actionContains @FXML protected void handleSubmitBu

我正在使用FXML创建一个用户界面。 有一个文本字段可以填写,还有一个按钮可以点击

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

如果文本字段包含与列表中的值相等的字符,则应在同一用户界面的文本字段中显示特定字符串

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");
             }
     }
}
公共类FXMLController{
@FXML文本字段输入
@FXML私有文本操作包含
@FXML受保护的void handleSubmitButtonAction(ActionEvent事件){
List n1=Arrays.asList(“44606”、“44613”、“44615”、“44619”}
字符串getInput=input.getText();
if(Arrays.asList(n1).contains(getInput)){
actionContains.setText(“CONTAINS”);
}否则{
actionContains.setText(“不包含”);
}
}
}
运行代码没有问题。字符串getInput的值等于输入文本,但if语句的结果总是“不包含”。 输入的文本例如为“44606621”


为了得到一个与列表值相等或不相等的字符串(因此等于而不是包含),我已经删除了最后三个字符,但这对结果没有任何影响。

这是因为您将其放入arrayList两次,因此它将变为列表的arrayList,而不是arrayList

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


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


这是因为您将它放入arrayList两次,所以它将取代arrayList成为列表的arrayList

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


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

我已更改代码:

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 n1=new ArrayList();
n1.添加(“44606”);
n1.添加(“44615”);
字符串getInput=input.getText();
字符串cutInput=getInput.substring(0,5);
如果(n1.包含(输出){
actionContains.setText(“CONTAINS”);
}否则{
actionsContains.setText(“不包含”);
}
更改输入以匹配列表值的字符数将导致一个有效的if语句。

我更改了代码:

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 n1=new ArrayList();
n1.添加(“44606”);
n1.添加(“44615”);
字符串getInput=input.getText();
字符串cutInput=getInput.substring(0,5);
如果(n1.包含(输出){
actionContains.setText(“CONTAINS”);
}否则{
actionsContains.setText(“不包含”);
}

更改输入以匹配列表值的字符数将导致一个有效的if语句。

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

 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;
}
public void testW(){
布尔标志=testContains(Arrays.asList(“44606”、“44613”、“44615”、“44619”)、“44606621”);
System.out.println(标志);
国际单项体育联合会(旗){
actionContains.setText(“CONTAINS”);
}否则{
actionContains.setText(“不包含”);
}
}
私有布尔testContains(列表、字符串字){
对于(int i=0;i
您必须在列表中迭代并搜索单词是否包含列表中的任何元素,而不是相反。正确的算法是

 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;
}
public void testW(){
布尔标志=testContains(Arrays.asList(“44606”、“44613”、“44615”、“44619”)、“44606621”);
System.out.println(标志);
国际单项体育联合会(旗){
actionContains.setText(“CONTAINS”);
}否则{
actionContains.setText(“不包含”);
}
}
私有布尔testContains(列表、字符串字){
对于(int i=0;i
您应该在数组的每个元素中查找字符串,而不是在数组中查找

所以用这个替换你的代码

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"); 
   } 
} 
}
公共类FXMLController{
@FXML文本字段输入
@FXML私有文本操作包含
@FXML受保护的无效handleSubmitButtonAction(ActionEvent事件){
List n1=Arrays.asList(“44606”、“44613”、“44615”、“44619”}
字符串getInput=input.getText();
对于(字符串s:n1){
如果(getinput.contains)(s)){
actionContains.setText(“CONTAINS”);
}否则{
actionContains.setText(“不包含”);
} 
} 
}

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

所以用这个替换你的代码

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"); 
   } 
} 
}
公共类FXMLController{
@FXML文本字段输入
@FXML私有文本操作包含
@FXML受保护的无效handleSubmitButtonAction(ActionEvent事件){
List n1=Arrays.asList(“44606”、“44613”、“44615”、“44619”}
字符串getInput=input.getText();
对于(字符串s:n1){
如果(getinput.contains)(s)){
actionContains.setText(“CONTAINS”);
}否则{
actionContains.setText(“不包含”);
} 
} 
}

列表
永远不会包含
字符串
n1
已经是
列表
,为什么要在其上再次使用
数组。asList
n1.contains(getInput)
A
List
List
永远不会包含
字符串
n1
已经是
列表
,为什么要在上面再次使用
Arrays.asList
呢?
n1.contains(getInput)
我已将其更改为'List n1=new ArrayList();n1.add(“44606”);n1.add.add(“44613”);n1.add(“44615”)更改了if条件:if(n1.contains(getInput)){但仍不工作。我已将其更改为` List n1=new ArrayList();n1.add(“44606”);n1.add(“44613”);n1.add(“44615”);并更改了if条件:if(n1.contains(getInput)){但仍不工作。