java - 是否可以将字符串与二维数组中的数组名称进行比较?

标签 java arrays

我试图使用用户输入的字符串在二维数组中查找数组。但是,我不断收到“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 ,但即使在导入 java.util.HashMap 后,仍收到“找不到符号,类 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");
        }   
    }
}

最佳答案

首先,您需要使用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");
}   

顺便说一句,您的变量名称非常具有误导性。 “条目”在 map 上下文中具有不同的含义,因为它封装了键+值对。您应该使用有意义的变量名称并遵守有关大小写等的现有 Java 约定。

关于java - 是否可以将字符串与二维数组中的数组名称进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42560732/

相关文章:

java - Tomcat、JAX-WS、Hibernate——缺陷和解决方案?

java - 如何使用 "Processing"在屏幕上绘制完全填满窗口的 N*N 网格

java - Thymeleaf 出现 Spring MVC 错误 未找到带有 URI 的 HTTP 请求的映射

Javascript 对数字和文本进行排序

javascript - 带有图像的命运之轮(无 Canvas )

c++ - 如何正确重载 '=' 运算符以使用重载 '[ ]' 运算符的数组?

java - Java从多个文件夹读取多个txt文件

java - 透视 xml 列标签和 java

arrays - Go:循环排序数组,sort.Sort用作值

java - 如何使用 Java 加载图像并向其中写入文本?