私は、ユーザーからの文字列入力を使用して2次元配列の配列を検索しようとしています。しかし、私は "String [] []をStringに変換することはできません"エラーを取得し続けます。キーボードのスキャナや文字列でこれを行うことができますか、この問題に対するより論理的な解決方法がありますか?文字列と2D配列の配列名を比較することはできますか?
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");
}
}
}
}
}
EDIT:
私はハッシュマップに私の2次元配列を変更しましたが、でも、java.util.HashMapをインポート後「のシンボルを見つけることができない、クラスHashMapを」取得しています。助けて?あなたは、そのインスタンスに配列変数の名前をマッピングする(代わりString[][]
の)Map
を使用する必要が
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つだけ?明らかに、if(entry.equalsIgnoreCase(Questions))を何も変更せずに10回繰り返しても意味をなさない。 if(entry.equalsIgnoreCase(Questions [i] [0])){'おそらくコンパイルされ、必要に応じてちょっとした意味があるかもしれません。 –
@ammoQエントリーと等しい質問の中で配列の名前を調べたいと思います。見つかった場合は「Test」、見つからない場合は「Test2」を印刷します。 –
http://stackoverflow.com/questions/744226/java-reflection-how-to-get-the-name-of-a-variable – Mawcel