みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

java ファイル操作

現在javaでファイル操作しファイルの文字列を検索したりファイルに文字列を追加したりする
ものを作成しています。
現状のコードはこのような感じです。
class addresskensaku{
public static void main(String[] args)throws IOException{
System.out.println("数字を選択\n1.名前で検索\n2.年齢で検索\n3.出身地で検索\n4.追加");
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
char res = str.charAt(0);
//1が選択された場合
if(res == '1' || res == '1'){
System.out.println("名前を入力してください。");
BufferedReader fn =
new BufferedReader(new InputStreamReader(System.in));
String str1 = fn.readLine();
try{
FileReader freader = new FileReader("addressdata.txt");
BufferedReader breader = new BufferedReader(freader);
String tmp = null;
//検索
System.out.println("検索結果 :");
while((tmp=breader.readLine())!=null){
String[] words = tmp.split(",");
//部分一致
if(words[0].indexOf(str1) != -1){
System.out.println(tmp);
}
}
breader.close();
}catch(IOException e){
System.out.println("e");
}
}
//2が入力された場合
if(res == '2' || res == '2'){
System.out.println("年齢を入力してください。");
BufferedReader o =
new BufferedReader(new InputStreamReader(System.in));
String ol = o.readLine();
try{
FileReader freader = new FileReader("addressdata.txt");
BufferedReader breader = new BufferedReader(freader);
String tmp =null;
//検索
while((tmp=breader.readLine())!=null){
String[] words = tmp.split(",");
//完全一致
if (ol.equals(words[1])){
// System.out.println("検索結果:");
System.out.println(tmp);
}
}
breader.close();
}catch(IOException e){
System.out.println("e");
}
}
//3が入力された場合
if(res == '3' || res == '3'){
System.out.println("出身地を入力してください。");
BufferedReader p =
new BufferedReader(new InputStreamReader(System.in));
String pref = p.readLine();
try{
FileReader freader = new FileReader("addressdata.txt");
BufferedReader breader = new BufferedReader(freader);
String tmp = null;
//検索
while((tmp=breader.readLine())!=null){
String[] words = tmp.split(",");
//部分一致
if(words[2].indexOf(pref) != -1){
System.out.println(tmp);
}
}
breader.close();
}catch(IOException e){
System.out.println("e");
}
}
//4が入力された場合 追加
if(res == '4' || res == '4'){
//氏名入力
System.out.println("氏名を入力してください。");
BufferedReader n =
new BufferedReader(new InputStreamReader(System.in));
String str2 = n.readLine();
//年齢入力
System.out.println("年齢を入力してください。");
BufferedReader o =
new BufferedReader(new InputStreamReader(System.in));
String str3 = o.readLine();
//住所入力
System.out.println("住所を入力してください。");
BufferedReader a =
new BufferedReader(new InputStreamReader(System.in));
String str4 = a.readLine();
//ファイルに書き込み
try{
File file = new File("addressdata.txt");
FileWriter filewriter = new FileWriter(file, true);
filewriter.write(str2+","+str3+","+str4+"\r\n");
filewriter.close();
}catch(IOException e){
System.out.println("e");
}
}
}
}
これをカプセル化し
各機能ごとにメソッドを分けて作ろうかなと思っています。
結果の出力はmainでやる予定です。

投稿日時 - 2014-05-13 20:44:46

QNo.8593925

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

メソッドにしました。
ループを付け加えちゃいました。(*ノω・*)テヘ

結果の出力は未対応です。

字下げを崩さないため、半角スペース2個を全角スペース1個に変換しています。

import java.io.*;

class Name{
 void name(){
  System.out.println("名前を入力してください。");
  BufferedReader fn =
  new BufferedReader(new InputStreamReader(System.in));
  try{
   String str1 = fn.readLine();
   FileReader freader = new FileReader("addressdata.txt");
   BufferedReader breader = new BufferedReader(freader);
   String tmp = null;
   //検索
   System.out.println("検索結果 :");
   while((tmp=breader.readLine())!=null){
    String[] words = tmp.split(",");
    //部分一致
    if(words[0].indexOf(str1) != -1){
     System.out.println(tmp);
    }
   }
   breader.close();
  }catch(IOException e){
   System.out.println("e");
  }
 }
}

class Age{
 void age(){
  System.out.println("年齢を入力してください。");
  BufferedReader o =
  new BufferedReader(new InputStreamReader(System.in));
  try{
   String ol = o.readLine();
   FileReader freader = new FileReader("addressdata.txt");
   BufferedReader breader = new BufferedReader(freader);
   String tmp =null;
   //検索
   while((tmp=breader.readLine())!=null){
    String[] words = tmp.split(",");
    //完全一致
    if (ol.equals(words[1])){
     // System.out.println("検索結果:");
     System.out.println(tmp);
    }
   }
   breader.close();
  }catch(IOException e){
   System.out.println("e");
  }
 }
}

class Add{
 void add(){
  System.out.println("出身地を入力してください。");
  BufferedReader p =
  new BufferedReader(new InputStreamReader(System.in));
  try{
   String pref = p.readLine();
   FileReader freader = new FileReader("addressdata.txt");
   BufferedReader breader = new BufferedReader(freader);
   String tmp = null;
   //検索
   while((tmp=breader.readLine())!=null){
    String[] words = tmp.split(",");
    //部分一致
    if(words[2].indexOf(pref) != -1){
     System.out.println(tmp);
    }
   }
   breader.close();
  }catch(IOException e){
   System.out.println("e");
  }
 }
}

class Tuika{
 void tuika(){
  //氏名入力
  System.out.println("氏名を入力してください。");
  BufferedReader n =
  new BufferedReader(new InputStreamReader(System.in));
  try{
   String str2 = n.readLine();
   //年齢入力
   System.out.println("年齢を入力してください。");
   BufferedReader o =
   new BufferedReader(new InputStreamReader(System.in));
   String str3 = o.readLine();
   //住所入力
   System.out.println("住所を入力してください。");
   BufferedReader a =
   new BufferedReader(new InputStreamReader(System.in));
   String str4 = a.readLine();
   //ファイルに書き込み
   File file = new File("addressdata.txt");
   FileWriter filewriter = new FileWriter(file, true);
   filewriter.write(str2+","+str3+","+str4+"\r\n");
   filewriter.close();
  }catch(IOException e){
   System.out.println("e");
  }
 }
}

class addresskensaku{
 public static void main(String[] args)throws IOException{
  while(true){
   System.out.println("数字を選択\n1.名前で検索\n2.年齢で検索\n3.出身地で検索\n4.追加\n9.終了");
   BufferedReader br =
   new BufferedReader(new InputStreamReader(System.in));
   String str = br.readLine();
   char res = str.charAt(0);
   //1が選択された場合
   if(res == '1' || res == '1'){
    Name name1;
    name1 = new Name();
    name1.name();
   }
   //2が入力された場合
   if(res == '2' || res == '2'){
    Age age1;
    age1 = new Age();
    age1.age();
   }
   //3が入力された場合
   if(res == '3' || res == '3'){
    Add add1;
    add1 = new Add();
    add1.add();
   }
   //4が入力された場合 追加
   if(res == '4' || res == '4'){
    Tuika tuika1;
    tuika1 = new Tuika();
    tuika1.tuika();
   }
   //9が入力された場合 追加
   if(res == '9' || res == '9'){
    break;
   }
  }
 }
}

投稿日時 - 2014-05-13 23:03:04

ANo.1

何を聞きたいのかわかりませんが、1つだけ

System.out.println("e");  ですと、e と表示されるだけですよ。
System.out.println(e);   ですね。

投稿日時 - 2014-05-13 20:50:44

補足

このコードを各機能ごとに複数のメソッドに分けカプセル化したいのです。

投稿日時 - 2014-05-13 21:30:24