扫描仪有问题 class

Having trouble with Scanner class

我正在使用扫描仪 class 获取文件名。但是我的 Scanner 甚至没有问我任何字符串。它只是将输入的字符串设置为“”(空字符串)。然后我得到文件未找到 exception.Also 另一个问题是,我正在使用 FileOutputStream 写入文件。如果不存在,是否应该创建文件?这是我使用扫描仪的部分代码。

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();
        }
    }

编辑我的全部菜单class:

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 程序将数据写入文件。

试试这个输入选择号码int user_choice = Integer.parseInt(s.nextLine());