アプリ版:「スタンプのみでお礼する」機能のリリースについて

目的はテキストファイル内の文字列に検索をかけヒットしたものを表示する というものです

import java.io.*;
class kensakuTest{
public static void main(String[] args)throws IOException{

System.out.println("検索方法を選択してください。\n0:学籍番号で検索\n1:名前で検索\n2:出身地で検索");

BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
char res = str.charAt(0);

//0が選択された場合
if(res == '0'){
System.out.println("学籍番号を入力してください。");
BufferedReader bn =
new BufferedReader(new InputStreamReader(System.in));
String str0 = fn.readLine();
char num = str0.charAt(0);
try{

FileReader freader = new FileReader("addressdata.txt");
BufferedReader breader = new BufferedReader(freader);
String tmp = null;
while((tmp=breader.readLine())!=null){
//完全一致
if(){
System.out.println("検索結果:");
System.out.println(tmp);
}
}
breader.close();
}catch(IOException e){
System.out.println("e");
}
}

//1が選択された場合
if(res == '1'){
System.out.println("名前を入力してください。");
BufferedReader fn =
new BufferedReader(new InputStreamReader(System.in));
String str1 = fn.readLine();
char name = str1.charAt(0);
try{
FileReader freader = new FileReader("data.txt");
BufferedReader breader = new BufferedReader(freader);
String tmp = null;
//検索
//部分一致
while((tmp=breader.readLine())!=null){
if(tmp.indexOf(str1) > -1){
System.out.println("結果は:");
System.out.println(tmp);
}
}
breader.close();
}catch(IOException e){
System.out.println("e");
}
}
//2が入力された場合
if(res == '2'){
System.out.println("出身地を入力してください。");
BufferedReader bl =
new BufferedReader(new InputStreamReader(System.in));
String belong = bl.readLine();
try{

FileReader freader = new FileReader("addressdata.txt");
BufferedReader breader = new BufferedReader(freader);
String tmp = null;
while((tmp=breader.readLine())!=null){
//完全一致
if(){
System.out.println("検索結果:");
System.out.println(tmp);
}
}
breader.close();
}catch(IOException e){
System.out.println("e");
}
}
}
}

現状はここまでできましたが完全一致の検索のやり方がわかりません。
あと問題点があるのですが 読み取るファイルがこのような場合

2000,田中 太郎,福島県
2001,福島 太郎,東京都

名前で福島 と検索をかけたとします この場合答えが
2000,田中 太郎,福島県
2001,福島 太郎,東京都
と表示されてしまいます このカンマで区切られている学籍番号、名前、出身地をうまく分け
それぞれ判別する方法はないのでしょうか?
よろしくおねがいします。

A 回答 (1件)

これは、データはただのテキストファイルで、それぞれ改行して書いてある、ということですよね?



でしたら、readLineで取り出したテキストをカンマで分割して、繰り返しを使って一致するテキストがないか調べていく、という感じになるでしょう。

String[] words = tmp.split(",");
if (belong.equals(words[0]){ 最初の「2000」の部分が一致した場合の処理 }
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!