「項目を2つ登録して検索」とありますが、その項目は実際には県名と名物という別のモノで、県名がキーになるもののように思います。ですので、 Map
でキーと値として扱うのが良いのではないでしょうか。
ユーザからの操作は無いものとして、コードベタ書きで動くものを考えました。
Main.java
java
1import java.io.*;
2import java.util.HashMap;
3import java.util.Map;
4
5public class Main {
6 public static void main(String[] args) throws Exception {
7 Map<String,String> map = readFile("data.txt");
8
9 System.out.println(contains(map, "高知", "みかん"));
10 System.out.println(contains(map, "徳島", "わかめ"));
11 System.out.println(get(map, "香川"));
12 System.out.println(get(map, "北海道"));
13 }
14
15 private static Map<String,String> readFile(String filename) throws IOException {
16 Map<String,String> map = new HashMap<>();
17 try(BufferedReader r = new BufferedReader(new FileReader(filename))) {
18 for(String line; (line=r.readLine())!=null; ) {
19 String[] tokens = line.split(" "); //半角スペース区切り
20 if(tokens.length == 2 && !map.containsKey(tokens[0])) {
21 map.put(tokens[0], tokens[1]);
22 }
23 }
24 }
25 return map;
26 }
27
28 private static boolean contains(Map<String,String> map, String name, String item) {
29 return map.getOrDefault(name,"").equals(item);
30 }
31
32 private static String get(Map<String,String> map, String name) {
33 return map.getOrDefault(name, "*ありません*");
34 }
35}
data.txt
愛媛 みかん
徳島 わかめ
高知 かつお
徳島 ABC
香川 うどん
※4行目は重複登録されないことを確認するためのエラーデータ
実行結果