我使用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值相等或不相等的字符串(等于而不是包含),但这对结果没有任何作用。
答案 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");
}
}
}