2

プログラムのコンストラクターで少し問題が発生しました。これは、顧客データを格納する単純な銀行データベースです。2 つのアカウント間で現金を入金、引き出し、転送するためのメソッドを実装する必要があります。新しい銀行口座を追加するために、そのようなコンストラクターを実装しました。

public Customer() {
        Scanner scan = new Scanner(System.in);
        System.out.println("Enter id of customer:");
        this.id = scan.nextLine();
        File folder = new File("CustomerDataBase" + File.separator + this.id + ".txt");
        if(folder.exists()) {
            System.out.println("Customer ID already exists!");
            System.exit(1);
        }  
        try {      
            System.out.println("Enter name of customer:");
            this.name = scan.nextLine();
            System.out.println("Enter surname of customer:");
            this.surname = scan.nextLine();
            System.out.println("Enter PESEL number of customer:");
            this.pesel = scan.nextLine();           
            System.out.println("Enter address of customer:");
            System.out.println("    Street:");
            this.adressStreet = scan.nextLine();
            System.out.println("    City:");
            this.adressCity = scan.nextLine();
            System.out.println("    Zip Code: ");
            this.zipCode = scan.nextLine();
            System.out.println("Enter funds of Customer:");
            this.funds = Double.parseDouble(scan.nextLine());
            this.saveCustomer();
            scan.close();
        }catch(NumberFormatException e) {
            System.out.println("Error : " + e);
            System.exit(1);
        }   
    }

そして、私は方法を持っていますwithdraw:

static void withdraw (int amount, int id) {

    File f = new File("CustomerDataBase" + File.separator + String.valueOf(id) + ".txt");
    Scanner fRead;

    Customer tempCustomer = new Customer();

    try{
        fRead = new Scanner(f);
        tempCustomer.id = fRead.nextLine();
        tempCustomer.name = fRead.nextLine();
        tempCustomer.surname = fRead.nextLine();
        tempCustomer.pesel = fRead.nextLine();
        tempCustomer.adressStreet = fRead.nextLine();
        tempCustomer.adressCity = fRead.nextLine();
        tempCustomer.zipCode = fRead.nextLine();
        tempCustomer.funds = Double.parseDouble(fRead.nextLine()) - id;
        fRead.close();
        tempCustomer.saveCustomer();
    }catch(FileNotFoundException e) {
        System.out.println("File not found!");
        System.exit(1);
    }   
}

withdrawメソッドはファイルからデータを読み取り、それをクラスに格納する必要があります。だから私はオブジェクトを顧客タイプとして作成しています。しかし、独自のコンストラクターを宣言しない場合に Java が提供する「プレーンな」(デフォルトの) コンストラクターだけを使用したいと考えています。どうやってするか?ステートメントについて読みましsuper():たが、正しく理解していれば、別のクラスから継承した場合にのみ機能します。

4

1 に答える 1