java - 调用函数的按钮导致被调用函数的参数变为空?
问题描述
在我为搜索输入文件而创建的函数中,我很难确定我认为是某种逻辑错误。
该函数接受一个字符串,然后在第一次运行时像平常一样搜索文件。之后,该值变为空白(没有任何代码这样做)并且搜索找不到匹配项。这是有问题的功能:
public String searchByName(String str) {
String value = str.trim().replace(" ", "");
String st = "\nResults:\n";
for (SeaPort port:ports) {
if (port.name.equalsIgnoreCase(value)) {
st += "\nPort: " + port.name + " " + port.index;
}
ArrayList<Dock> docks = port.getDocks();
for (Dock dock:docks) {
if (dock.name.equalsIgnoreCase(value)) {
st += dock.toString();
}
}
ArrayList<Person> persons = port.getPersons();
for (Person person:persons) {
if (person.name.equalsIgnoreCase(value)) {
st += person.toString();
}
}
ArrayList<Ship> ships = port.getShips();
for (Ship ship:ships) {
if (ship.name.equalsIgnoreCase(value)) {
st += ship.toString();
}
}
}
return st;
}
此外,这里是调用上述按钮的动作侦听器背后的函数:
public void searchFile() {
if (file == null) {
textArea.append("\nCannot search. Please select a file first.");
} else {
world = new World(sc);
String term = textField.getText();
String selection = (String) searchOptions.getSelectedItem();
switch (selection) {
case "Index":
int i;
try {
i = Integer.parseInt(term);
textArea.append("\nSearching for " + i + " by " + selection + "\n\n");
textArea.append(world.searchByIndex(i));
} catch (NumberFormatException e) {
textArea.append("\nError with input. Number required to search ID");
}
break;
case "Type":
textArea.append("\nSearching for " + term + " by " + selection + "\n\n");
textArea.append(world.searchByType(term));
break;
case "Name":
textArea.append("\nSearching for " + term + " by " + selection + "\n\n");
textArea.append(world.searchByName(term));
System.out.println(term);
break;
default:
break;
}
}
}
我发现奇怪的是我的测试打印语句继续保存字符串,但不打印结果。这是连续按两次“搜索”后的屏幕截图:
我想不出是什么导致了这个问题。最初在开发所有三种方法时,我认为是 switch 语句导致了错误,所以我等待构建此方法,然后再进行进一步的故障排除。但是,此代码中有很多中断。问题可能是港口只有一个海港吗?
解决方案
推荐阅读
- php - 如何在前端打印 php mysql 查询响应消息
- pandas - Pandas - 将多个 csv 文件合并为一个时的问题
- drop-down-menu - 如何在颤动中为下拉按钮制作圆形边框?
- r - 有光泽的 Quantstrat
- c# - Task.Run(Action) 是否启动一个新的线程 id 线程池中没有更多线程?
- python - 在 python 2 中使用 super() 引发类型错误
- python - 如何为 Keras 神经网络创建特异性自定义指标
- lwip - lwip 示例 netconn_new 总是返回 NULL
- javascript - chrome控制台中数组的不同表示
- ion-slide-box - 在 ion-slide-box 上显示寻呼机点