![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
現在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でやる予定です。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.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;
}
}
}
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- Ruby vscode 文字化け 1 2022/05/21 19:17
- オープンソース Try Kotlinで readLine()を使うには 1 2023/03/27 21:06
- C言語・C++・C# C# で、あるフォルダー内にあるすべてのテキストファイルを別のフォルダーにコピーする。 4 2022/11/21 13:23
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- Java java final 1 2022/06/10 22:49
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語のポインターに関する警告
-
[JAVA]try 内の変数を外で!?
-
JSPやサーブレットでSystem.out...
-
JAVA 文字色変更
-
JAVAのDouble型の小数点以下の...
-
曜日の取得方法を教えて下さい!
-
java教えてください。
-
改行の判定方法
-
IPアドレスから組織やプロバイ...
-
全角スペースの判定について
-
nullcline
-
構文解析中にファイルの終わり...
-
java int integer
-
LC発振回路-ループ利得
-
Javaのコマンドライン引数を使...
-
java ファイル操作
-
オブジェクトの中のプロパティ...
-
ダブルクォーテーションのrepla...
-
続・ZZZ,ZZZ,ZZ9形式の金額形式...
-
javaで質問です。 文字列2023/2...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語のポインターに関する警告
-
JSPやサーブレットでSystem.out...
-
[JAVA]try 内の変数を外で!?
-
EclipseでJava
-
LC発振回路-ループ利得
-
エクセルマクロ文で、赤文字セ...
-
JAVAのDouble型の小数点以下の...
-
JAVA 文字色変更
-
文字列の引き算
-
「続行するには何かキーを押し...
-
nullcline
-
構文解析中にファイルの終わり...
-
java シンボルが見つかりません...
-
改行の判定方法
-
Javaのコマンドライン引数を使...
-
JAVAでの占い
-
曜日の取得方法を教えて下さい!
-
Javaのプログラムがどうしても...
-
IPアドレスから組織やプロバイ...
-
会員情報登録プログラムの作成...
おすすめ情報