我正在使用 FXML 创建用户界面。 有一个可以填写的 TextField 和一个可以单击的 Button。
单击按钮时,应读取已填写的文本并将其与列表进行比较。
如果文本字段包含等于列表中的值的字符,则应在同一用户界面上的文本字段中显示某个字符串。
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 语句的结果始终为“DOES NOT CONTAIN”。 例如,输入的文本为“44606621”。
我已经截断了最后三个字符,以便得到一个等于或不等于列表值的字符串(因此等于而不是包含),但这对结果没有任何影响。
最佳答案
这是因为你将它放入 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)) {
关于java - 使用 if 语句比较 String 和 Arrays.asList 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46897235/