Bagaimana cara memindai baris pertama file teks untuk dua bilangan bulat, menghilangkan string apa pun?

Saya harus mencari baris pertama file teks untuk dua nilai Int yang akan menjadi dimensi array 2D. Inilah yang saya miliki sejauh ini...Terima kasih!

 try {
        Scanner scan = new Scanner(f);
            int rows = scan.nextInt();
            int columns = scan.nextInt();
        String [][] maze = new String[rows][columns];
     }

person Trevor Arjeski    schedule 13.11.2010    source sumber
comment
Apakah Anda diharuskan menggunakan Scanner?   -  person Ignacio Vazquez-Abrams    schedule 13.11.2010
comment
Gunakan ekspresi reguler   -  person khachik    schedule 13.11.2010
comment
Tidak, itu adalah preferensi pribadi saya.   -  person Trevor Arjeski    schedule 13.11.2010


Jawaban (1)


Satu cara lain:

// read your file
File f = new File("file.txt"); 

// make sure your file really exists
if(f.exists()) {  

    // a buffered reader is standard for reading files in Java
    BufferedReader bfr = new BufferedReader(new FileReader(f));

    // read the first line, that's what you need
    String line = bfr.readLine();

    // assuming your integers are separated with a whitespace, use this splitter
    // if they're separated with a comma, the use line.split(",");
    String[] integers = line.split(" ");

    // get the first integer
    int i1 = Integer.valueOf(integers[0]);

    // get the second integer
    int i2 = Integer.valueOf(integers[1]);

    System.out.println(i1);
    System.out.println(i2);

    // finally, close buffered reader to avoid any leaks
    bfr.close();
}

Saya akan menyerahkan penanganan pengecualian kepada Anda. Anda akan mendapat pengecualian jika file Anda tidak ada, tidak dapat dibaca, atau jika bagian pertama dan kedua dari baris pertama bukan bilangan bulat. Tidak masalah jika hasilnya negatif.

Catatan: Anda tidak menentukan apa pun tentang tampilan baris pertama. Saya berasumsi dalam kode ini mereka berada di awal, dipisahkan dengan spasi.

Jika tidak, Anda juga dapat menggunakan pemisahan string, tetapi Anda harus memeriksa apakah setiap bagian yang dipisahkan dapat dikonversi ke Integer. Jika Anda memiliki 3 bilangan bulat atau lebih pada baris pertama, akan ada ambiguitas. Oleh karena itu, asumsi saya.

person darioo    schedule 13.11.2010