Pemrosesan token dan garis Java

Saya sedang menulis sebuah program yang membaca data dari file teks dengan berbagai statistik olahraga bola basket. Setiap baris (setelah dua baris tajuk) berhubungan dengan satu permainan tertentu dan skor masing-masing tim, dengan beberapa string lain di sana. Saya mencoba menggunakan pemindai untuk membaca skor int setiap pertandingan, menyimpannya dalam variabel, dan kemudian membandingkannya untuk menentukan tim mana yang memenangkan pertandingan itu sehingga saya dapat meningkatkan kemenangan nanti dalam program ini. Saya menemukan cara membaca semua int secara berurutan, tetapi saya tidak tahu cara membaca dua int dalam satu baris, menyimpannya sebagai variabel, membandingkannya, dan kemudian melanjutkan ke baris/permainan berikutnya.

Inilah metode yang relevan:

public static void numGamesHTWon(String fileName)throws FileNotFoundException{
    System.out.print("Number of games the home team won: ");
    File statsFile = new File(fileName);
    Scanner input1 = new Scanner(statsFile);
    String line = input1.nextLine();
    Scanner lineScan = new Scanner(line);
    input1.nextLine();
    input1.nextLine();

    while (input1.hasNext()) {
        if (input1.hasNextInt()) {
            int x = input1.nextInt();
            System.out.print(x);   
            input1.next();
        } else {
            input1.next();
        }
    }

Beberapa baris dari file teks:

Bola Basket Wanita NCAA

2011 - 2012

2007-11-11 Beras 63 @Winthrop 54 O1
2007-11-11 @S Dakota St 93 UC Riverside 90 O2
2007-11-11 @Texas 92 Missouri St 55
2007-11-11 Tennessee 76 Chattanooga 56
2007-11-11 Mississippi St 76 Centenary 57
2007-11-11 ETSU 75 Delaware St 72 O1 Pramusim NIT


person Hector    schedule 23.10.2015    source sumber


Jawaban (1)


membaca file baris demi baris. lalu pisahkan baris tersebut menjadi String[]. karena Anda tahu di mana letak skor pada setiap baris, Anda kemudian dapat dengan mudah menguraikan nilai-nilai tersebut dari array dan membandingkannya. bisakah Anda membagikan beberapa baris masukan Anda? maka saya dapat menunjukkan kepada Anda kode persisnya

Anda dapat mencoba sesuatu seperti

String[] parts = str.split("\\D+");

di mana str adalah baris yang baru saja Anda baca. sekarang bagian array akan memiliki semua angka dalam string Anda. cukup baca arraynya, parsing ke int dan buat perbandingannya. perhatikan bahwa tiga entri pertama dalam array ini akan sesuai dengan tanggal, jadi abaikan saja.

Misalnya

String[] parts = "2007-11-11 Mississippi St 76 Centenary 57".split("\\D+");

for (String g: parts)

        System.out.println(g);

cetakan

2007
11
11
76
57

jadi sekarang Anda tinggal mengambil dua nilai terakhir dan membandingkannya

 while (input1.hasNextLine()) {
            String line = input1.nextLine();

             String[] parts = line .split("\\D+");

             int score1 = Integer.parseInt(parts[parts.length-2]);

             int score2 = Integer.parseInt(parts[parts.length-1]);

             /*now compare score1 and score2 and do whatever...*/
        }
person AbtPst    schedule 23.10.2015
comment
Saya tidak seharusnya menggunakan array atau parsing, cukup gunakan pemindai untuk membaca file, baris, dan token. - person Hector; 23.10.2015
comment
Selain tanggalnya, apakah Anda yakin hanya bisa mendapatkan dua int dalam satu baris? - person AbtPst; 23.10.2015
comment
Tanggal tidak dihitung sebagai int, dua skor dihitung, dan O2 dan O1 yang muncul tidak dibaca sebagai int karena dimulai dengan O, jadi cara saya memilikinya, hanya mencetak semua skor di urutan. Seharusnya hanya ada dua skor per baris. - person Hector; 23.10.2015
comment
silakan lihat hasil edit terbaru. coba jalankan kodenya dan lihat apakah ini berhasil - person AbtPst; 23.10.2015