我试图使用来自用户的字符串输入在二维数组中找到一个数组。但是,我一直得到" String [] []无法转换为String"错误。我可以使用键盘扫描仪和字符串执行此操作,还是有更合理的解决方案来解决此问题。
import java.util.Scanner;
public class QandA{
public static void main(String[] args){
String entry;
String[] Why = new String[]{"Because.", "Just Because.", "Why yourself."};
String[][] Questions = new String[][] { Why };
Scanner k = new Scanner(System.in);
entry = k.next();
for (int i=0 ; i < Questions.length ; i++){
if (entry.equalsIgnoreCase(Questions)){
System.out.println("Test");
break;
}
if (i == Questions.length){
if (!entry.equalsIgnoreCase(Questions)){
System.out.println("Test2");
}
}
}
}
}
编辑:
我已经将我的2D数组更改为一个hashmap但是得到了一个&#34;找不到符号,类Hashmap&#34;甚至在导入java.util.HashMap之后;救命? [固定]
import java.util.Scanner;
import java.util.Map;
import java.util.HashMap;
import java.util.*;
public class QandA{
public static void main(String[] args){
String UE;
String[] Why = new String[]{"Because.", "Just Because.", "Why yourself."};
Map<String, String[]> Questions = new HashMap<>();
Questions.put("Why", Why);
Scanner k = new Scanner(System.in);
UE = k.next();
if(Questions.keySet().stream().filter(UE::equalsIgnoreCase).findFirst().isPresent()) {
System.out.println("Test");
} else {
System.out.println("Test2");
}
}
}
答案 0 :(得分:1)
首先,您需要使用Map
(而不是String[][]
)将数组变量的名称映射到其实例:
String[] Why = new String[]{"Because.", "Just Because.", "Why yourself."};
Map<String, String[]> Questions = new HashMap<>();
Questions.put("Why", Why);
接下来,您可以通过多种方式执行Test / Test2检查。这是一种方式:
if(Questions.keySet().stream().filter(entry::equalsIgnoreCase).findAny().isPresent()) {
System.out.println("Test");
} else {
System.out.println("Test2");
}
作为旁注,您的变量名称非常具有误导性。 &#34;条目&#34;在地图的上下文中具有不同的含义,因为它封装了Key + Value Pair。您应该使用有意义的变量名称并遵守有关案例等的现有Java约定。