스캐너 클래스에 문제가

바란 사힌 :

나는 파일 이름을 얻기 위해 스캐너 클래스를 사용하고 있습니다. 하지만 내 스캐너들도 나에게 모든 문자열을 요구하지 않습니다. 그것은 단지 (빈 문자열) ""에 입력 한 문자열을 설정합니다. 그럼 파일이 아닌 또 다른 질문은 내가 파일을 작성하는 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();
        }
    }

내 메뉴 클래스의 전체 편집 :

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 :

선택의 수 이하를 입력하려면이 시도int user_choice = Integer.parseInt(s.nextLine());

추천

출처http://43.154.161.224:23101/article/api/json?id=345117&siteId=1