是否可以将字符串与2D数组中的数组名称进行比较?

时间:2017-03-02 16:27:18

标签: java arrays

我试图使用来自用户的字符串输入在二维数组中找到一个数组。但是,我一直得到" 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");
        }   
    }
}

1 个答案:

答案 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约定。