Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

Javaのプログラミングについて質問です。

Java勉強中の者です。
Javaプログラミングの問題がどうしても分からなくて困っております。

名簿クラスを利用し、対話式の名簿プログラムを組みなさい。
仕様は下記の通りです。
新規追加、変更、削除、
一覧表示、ソート機能があること。
プログラム実行後、モード選択ができるようにしなさい。
「-i」と入力されたら新規追加、「-u」で変更、「-d」で削除、「-v」で一覧表示、「-s」でプログラム終了。
新規追加は社員番号、名前、部署が入力でき社員番号の入力値チェックを実施する。
同じ社員番号のデータが存在しては駄目。
新規追加時に重複チェックを実施する。
変更は社員番号を入力し、該当するデータの変更を実施する。
該当するデータがない場合はエラーメッセージを表示する。変更可能なのは名前と部署のみとする。
削除は社員番号を入力し、該当するデータの削除を実施し、データがない場合はエラー。
削除を実行する前に該当データの内容を表示して、y/nで本当に削除するかを確認する。
一覧表示は現在保存されているデータを全件表示する。表示形式は以下。
社員番号: 0001 名前: 沖田 部署:営業部
社員番号: 0002 名前: 佐藤 部署:総務部
ソートは社員番号の昇順でソートされる。
各チェックでエラーが発生した場合はエラーメッセージを表示し、再び入力待ち状態にする。
新規追加、変更、削除ではどのタイミングでも「-m」を入力されたらモード選択に戻ること。
その場合、途中まで入力されていたものは破棄すること。
一覧表示、ソートは、実行時に完了メッセージを表示しモード選択に戻ること。

という問題なんですが、どなたかわかりやすい回答、解説のほう頂けるとありがたいです。
よろしくお願いします。

4

回答

615

閲覧

4件の回答

評価

0

「どうしても分からなくて」なんて言ってないで、まずは自分でできるだけのことをして、その結果を書いてみような。

評価

60

回答

import java.io.File;
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.Console;
import java.util.*;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.util.Comparator; 
import java.lang.System;


public class LIST{

public static void main(String[] args){
System.out.println("対話式名簿プログラム");



outside: while(true){

System.out.println("「-i」:新規追加 「-u」:変更 「-d」:削除、「-v」:一覧表示 「-s」:プログラム終了");
System.out.print("モード選択:");
Console i=System.console();
String c=i.readLine();

int check=0;


switch(c){

case "-i":System.out.println("新規追加");
check=1;
break;

case "-u":System.out.println("変更");
check=2;
break;

case "-d":System.out.println("削除");
check=3;
break;

case "-v":System.out.println("一覧表示");
check=4;
break;

case "-s":System.out.println("プログラム終了");
check=5;
break;

case "-m":check=0;
break;

}

if(check==1){

String t[]={"","","",""};
int g[]={0,0,0,0};
String s[]=new String[3];
int check2=0;
while(check2==0){
System.out.print("社員番号:");
c=i.readLine();
if(c.indexOf("-m")>=0)continue outside;


s[0]=c;
if(c.length()==4){
t[0]=c.substring(0,1);
t[1]=c.substring(1,2);
t[2]=c.substring(2,3);
t[3]=c.substring(3,4);
try{
g[0]=Integer.parseInt(t[0]);
g[1]=Integer.parseInt(t[1]);
g[2]=Integer.parseInt(t[2]);
g[3]=Integer.parseInt(t[3]);
check2=1;
}catch(Exception e){

}

}

}






c="";
while(c.equals("") ){
System.out.print("名前:");
c=i.readLine();
if(c.indexOf("-m")>=0)continue outside;

s[1]=c;

}

c="";
while(c.equals("")){
System.out.print("部署:");
c=i.readLine();
if(c.indexOf("-m")>=0)continue outside;

s[2]=c;

}

Meibo dd=new Meibo(s[0],s[1],s[2]);



String str="";
try( 
  BufferedReader br = new BufferedReader(new FileReader(new File("Meibo.txt")));)
{
 
  while((str= br.readLine()) != null){
    

  }

}catch(FileNotFoundException e){
  System.out.println("ファイルが存在しません");
File newfile = new File("Meibo.txt");
        try {
            if (newfile.createNewFile()) {
                System.out.println("ファイルの作成に成功しました。");
            } else {
                System.out.println("ファイルの作成に失敗しました。");
            }
        } catch (IOException v) {
            System.out.println("例外が発生しました。");
            System.out.println(e);
        }


}catch(IOException e){
  System.out.println(e);
}

List<Meibo> M=new ArrayList<Meibo>();


try (BufferedReader br = new BufferedReader(new FileReader("Meibo.txt"));){
   String line1="";
        while ((line1 = br.readLine())!=null) {
            


    String line2[]=line1.split(" ",-1);



    Meibo m=new Meibo(line2[0],line2[1],line2[2]);
    M.add(m);

            if (line1 == null) {
                break;
            }
            }
   
} catch (IOException e) {
    e.printStackTrace();
}


List<Meibo> M2=new ArrayList<Meibo>();
int check3=0;

for(Meibo b:M){


if(b.社員番号.equals(s[0])){
M2.add(b);
check3=1;
System.out.println("社員番号重複あり 変更なし");
}else{

M2.add(b);
}

}


if(check3==0)M2.add(dd);





try(
BufferedWriter writer=new BufferedWriter(new FileWriter("Meibo.txt"));){
for(Meibo d:M2){

String write0=d.社員番号+" "+d.名前+" "+d.部署;

writer.write(write0); 
writer.newLine();
}


}catch(Exception r){
System.out.println("error");
}


}



if(check==2){



String t[]={"","","",""};
int g[]={0,0,0,0};
String s[]=new String[3];
int check2=0;
while(check2==0){
System.out.print("変更するデータの社員番号:");
c=i.readLine();
if(c.indexOf("-m")>=0)continue outside;

s[0]=c;
if(c.length()==4){
t[0]=c.substring(0,1);
t[1]=c.substring(1,2);
t[2]=c.substring(2,3);
t[3]=c.substring(3,4);
try{
g[0]=Integer.parseInt(t[0]);
g[1]=Integer.parseInt(t[1]);
g[2]=Integer.parseInt(t[2]);
g[3]=Integer.parseInt(t[3]);
check2=1;
}catch(Exception e){

}
}
}





c="";
while(c.equals("") ){
System.out.print("変更するデータの名前:");
c=i.readLine();
if(c.indexOf("-m")>=0)continue outside;

s[1]=c;

}

c="";
while(c.equals("")){
System.out.print("変更するデータの部署:");
c=i.readLine();
if(c.indexOf("-m")>=0)continue outside;

s[2]=c;

}

Meibo MM=new Meibo(s[0],s[1],s[2]);



List<Meibo> M=new ArrayList<Meibo>();
List<Meibo> M2=new ArrayList<Meibo>();


int check4=0;


try (BufferedReader br = new BufferedReader(new FileReader("Meibo.txt"));){
   String line1="";
        while ((line1 = br.readLine())!=null) {
            


    String line2[]=line1.split(" ",-1);



    Meibo m=new Meibo(line2[0],line2[1],line2[2]);

    if(line2[0].equals(s[0]) ){
        check4=1;
        System.out.println("社員番号存在");
        M2.add(MM);
        }else{M2.add(m);}
    
        

            }
   
} catch (IOException e) {
    e.printStackTrace();
}

if(check4==1){






}else{
System.out.println("該当する社員番号なし");
}




try(
BufferedWriter writer=new BufferedWriter(new FileWriter("Meibo.txt"));){
for(Meibo d:M2){

String write0=d.社員番号+" "+d.名前+" "+d.部署;

writer.write(write0); 
writer.newLine();
}


}catch(Exception r){
System.out.println("error");
}





}

if(check==3){



String t[]={"","","",""};
int g[]={0,0,0,0};
String s[]=new String[3];
int check2=0;
while(check2==0){
System.out.print("削除するデータの社員番号:");
c=i.readLine();
if(c.indexOf("-m")>=0)continue outside;

s[0]=c;
if(c.length()==4){
t[0]=c.substring(0,1);
t[1]=c.substring(1,2);
t[2]=c.substring(2,3);
t[3]=c.substring(3,4);
try{
g[0]=Integer.parseInt(t[0]);
g[1]=Integer.parseInt(t[1]);
g[2]=Integer.parseInt(t[2]);
g[3]=Integer.parseInt(t[3]);
check2=1;
}catch(Exception e){

}
}
}



List<Meibo> M=new ArrayList<Meibo>();
List<Meibo> M2=new ArrayList<Meibo>();


int check4=0;

String line2[]=new String[3];

String line3[]=new String[3];

try (BufferedReader br = new BufferedReader(new FileReader("Meibo.txt"));){
   String line1="";
        while ((line1 = br.readLine())!=null) {
            


     line2=line1.split(" ",-1);



    Meibo m=new Meibo(line2[0],line2[1],line2[2]);

    if(line2[0].equals(s[0]) ){
        check4=1;
        System.out.println("削除対象の社員番号存在");
        line3[0]=line2[0];
        line3[1]=line2[1];
        line3[2]=line2[2];

        
        }else{M2.add(m);}
    
        

            }
   
} catch (IOException e) {
    e.printStackTrace();
}

if(check4==0){
System.out.println("削除対象の社員番号なし");
check=0;
}else{

System.out.println("削除対象のデータ:"+"社員番号:"+line3[0]+" 名前:"+line3[1]+" 部署:"+line3[2]);

System.out.print("本当に削除しますか?(y/n):");

c=i.readLine();
if(c.indexOf("-m")>=0)continue outside;

if(c.equals("y")){


try(
BufferedWriter writer=new BufferedWriter(new FileWriter("Meibo.txt"));){
for(Meibo d:M2){

String write0=d.社員番号+" "+d.名前+" "+d.部署;

writer.write(write0); 
writer.newLine();
}


}catch(Exception r){
System.out.println("error");
}
}


}


}



if(check==4){

try (BufferedReader br = new BufferedReader(new FileReader("Meibo.txt"));){
   String line1="";
        while ((line1 = br.readLine())!=null) {
            
String line2[]=line1.split(" ",-1);

    System.out.println("社員番号:"+line2[0]+" 名前:"+line2[1]+" 部署:"+line2[2]);
        

            }
   
} catch (IOException e) {
    e.printStackTrace();
}

System.out.println("一覧表示完了");
}


if(check==5){


System.exit(0);

}



List<Meibo> M=new ArrayList<Meibo>();

try (BufferedReader br = new BufferedReader(new FileReader("Meibo.txt"));){
   String line1="";
        while ((line1 = br.readLine())!=null) {
            
String line2[]=line1.split(" ",-1);

    Meibo m=new Meibo(line2[0],line2[1],line2[2]);

    M.add(m);        

            }
   
} catch (IOException e) {
    e.printStackTrace();
}


Collections.sort(M, new MeiboComparator()); 



try(
BufferedWriter writer=new BufferedWriter(new FileWriter("Meibo.txt"));){
for(Meibo d:M){

String write0=d.社員番号+" "+d.名前+" "+d.部署;
writer.write(write0); 
writer.newLine();
}


}catch(Exception r){
System.out.println("error");
}

if(check!=4 && check!=0){
System.out.println("ソート完了");}



}

}

}
 
class Meibo{


Meibo(String a,String b,String c){
社員番号=a;
名前=b;
部署=c;

String t[]=new String[4];
int g[]=new int[4];

t[0]=a.substring(0,1);
t[1]=a.substring(1,2);
t[2]=a.substring(2,3);
t[3]=a.substring(3,4);
try{
g[0]=Integer.parseInt(t[0]);
g[1]=Integer.parseInt(t[1]);
g[2]=Integer.parseInt(t[2]);
g[3]=Integer.parseInt(t[3]);

}catch(Exception e){

}

社員番号2[0]=g[0];
社員番号2[1]=g[1];
社員番号2[2]=g[2];
社員番号2[3]=g[3];

社員番号3=g[0]*1000+g[1]*100+g[2]*10+g[3];
}

String 社員番号="";
String 名前="";
String 部署="";
int 社員番号2[]={0,0,0,0};
int 社員番号3=0;

}



class MeiboComparator implements Comparator<Meibo>{


public int compare(Meibo m1, Meibo m2) {return m1.社員番号3 < m2.社員番号3 ? -1 : 1;}

}

評価

0

作ってあげる厨とでも言うべきか。
助けたつもりか知らんが、9割以上の確率で、何のプラスにもならんし明日には忘れてるよ。
元来そういう場所ではなかったはずなんだがなあ。

評価

0

利用規約を読んでから利用しようよ。
ここは、他人にソースを書いてもらう場所じゃないよ。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。