【发布时间】:2018-08-26 06:21:12
【问题描述】:
我正在用 Java 制作一个辅助项目,其中移动设备将存储应用程序列表 (ArrayList) 和单独的 UI 类来处理所有输入/输出和业务相关逻辑。问题出在 Mobile 类的以下块中:
public App searchApp(String name)
{
System.out.println(list);
for(App app: list) {
String appName = app.getName();
if(appName == name)
{
return app;
}
}
throw new IllegalStateException();
}
此功能可让人们在列表中搜索应用程序。以下是从用户那里获取搜索输入的方式:
public String inputSearch()
{
System.out.println("Enter app name to search: ");
return sc.nextLine().trim();
}
以下是 UI 类显示结果的方式:
public void choices(int choice)
{
switch(choice)
{
case 1:
String[] input = inputDetails();
mobile.addApp(input[0], input[1]);
break;
case 2:
String s = inputSearch();
App found = mobile.searchApp(s);
System.out.println("App found in search:");
System.out.println(found.toString());
break;
and so on...
问题出在 searchApp 中。
我无法弄清楚为什么如果 appName 和 name 在打印时可以被视为相等(也已在两种字符串类型上使用 trim() 但仍然没有成功),如果条件不起作用。强>
【问题讨论】:
-
只需在
String类中使用.equals方法。appName.equals(name) -
尝试使用matches(),例如nameOne.matches(nameTwo);
标签: java arrays class object arraylist