Scannerクラスに問題があります

バランサヒン:

私は、ファイル名を取得するにはScannerクラスを使用しています。しかし、私のスキャナのも私に任意の文字列を求めていません。それはちょうど「」(空文字列)に入力した文字列を設定します。それから私は、ファイルが別の質問は、私はファイルを書き込むたFileOutputStreamを使用していますされexception.Alsoが見つかりませんます。存在していない場合には、ファイルを作成する必要はありませんか?ここで私はスキャナを使用し、私のコードの一部です。

else if(user_choice == 3){
                System.out.println("kaydedilecek dosyanın ismini giriniz : ");
                String file_name = s.nextLine();
                IOdata iod = new IOdata(data);
                iod.save_data(file_name);

以下のコードは、IOについてです。

public void save_data(String file_name) throws IOException {
        try {
            FileOutputStream fos = new FileOutputStream(file_name);
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeObject(data);
            oos.close();
        }catch (FileNotFoundException e){
            file_name = "default";
            FileOutputStream fos = new FileOutputStream(file_name);
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeObject(data);
            oos.close();
        }
    }

私のMenuクラスのフル編集:

import java.io.IOException;
import java.util.Scanner;

public class Menu {
    public Menu() throws IOException {
        Scanner s = new Scanner(System.in);
        Data data = new Data();
        while(true){
            System.out.println("1-data oluştur");
            System.out.println("2-datayı yükle");
            System.out.println("3-datayı kaydet");
            System.out.println("4-çıkış");
            System.out.println("5-yazdır");
            int user_choice = s.nextInt();
            if(user_choice == 4) {
                break;
            }else if(user_choice == 1){
                DataManupilator dm = new DataManupilator(data);
                System.out.println("datanın uzunluğunu giriniz : ");
                int length = s.nextInt();
                data = dm.generate_data(length);
            }else if(user_choice == 5){
                data.print_items();
            }else if(user_choice == 3){
                System.out.println("kaydedilecek dosyanın ismini giriniz : ");
                String file_name = s.nextLine();
                IOdata iod = new IOdata(data);
                iod.save_data(file_name);
            }else if(user_choice == 2){
                System.out.println("datanın bulunduğu dosyanın ismini giriniz : ");
                String file_name = s.nextLine();
                IOdata iod = new IOdata(data);
                iod.save_data(file_name);
            }
        }
    }
}

ので、私が説明させて私のコードでは、いくつかのトルコ語の文字列があります。ユーザーが選択した場合3プログラムは、ファイルへの書き込みデータになります。

am0awad:

選択肢を入力するには、これを試してみてくださいnubmerint user_choice = Integer.parseInt(s.nextLine());

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=345119&siteId=1