Проблема с чтением и отображением содержимого файла правильно - PullRequest
0 голосов
/ 01 июня 2018

Моя программа состоит из нескольких опций того, что делать с пользовательскими данными о шоу (имя, день, время).Одним из вариантов является чтение файла и отображение его содержимого для пользователя.Хотя этот раздел моей программы работает, он не отображается правильно (как показано ниже).Должен ли я внести изменения в то, как программа читает файл?Если есть какие-либо предложения относительно того, что я должен изменить в своем коде, я буду очень признателен!Спасибо.

Вот мой код:

//Method loadShows
public static void loadShows() throws IOException {
    //String to find file
    String findFile, file;
    //ask for location of file
    System.out.println("Enter Show File Location: ");
    //Read input
    findFile = in.readLine();

    file = findFile + "/show.txt";

    BufferedReader input = new BufferedReader(new FileReader(file));
    x = Integer.valueOf(input.readLine()).intValue();
    System.out.println("Loading " + x + " Shows");

    for(i = 0; i<=(x-1); i++) {
        name[i] = input.readLine();
        day[i] = input.readLine();
        time[i] = input.readLine(); 
    }

    for(i = 0; i<=(x-1); i++) {
        System.out.println("Name : " + name[i]);
        System.out.println("Day : " + day[i]);
        System.out.println("Time(2:30 am = 0230) : " + time[i] + "\r");
    }
}

Вот вывод:

Enter Show File Location: 
C:\Users\OneDrive\Desktop\MyFirstJavaProject
Loading 3 Shows
Name :  //***As you can see it isn't in order, or displayed correctly***    
Day : Suits
Time(2:30 am = 0230) : Monday

Name : 0130
Day : The Flash
Time(2:30 am = 0230) : Thursday

Name : 0845
Day : National Geographic
Time(2:30 am = 0230) : Sunday

Вот мой файл:

3     
Suits
Monday
0130
The Flash
Thursday
0845
National Geographic
Sunday
0525

1 Ответ

0 голосов
/ 01 июня 2018

Вы можете сделать только один для:

public static void loadShows() throws IOException {
        BufferedReader br = new BufferedReader(new FileReader("C:\\Users\\adossantos\\file.txt"));
        try {
            StringBuilder sb = new StringBuilder();
            String line = br.readLine();

            while (line != null) {
                sb.append(line);
                sb.append(System.lineSeparator());
                line = br.readLine();
            }
            String everything = sb.toString();
            String[] values = everything.split("\n");

            for(int i = 0; i < values.length; i+=3) {

                if(i + 3 > values.length - 1  )
                    break;

                System.out.println("Name : " + values[i + 1]);
                System.out.println("Day : " + values[i + 2 ]);
                System.out.println("Time(2:30 am = 0230) : " + values[i + 3] + "\r");
            }
        } finally {
            br.close();
        }
    }

Ответ:

enter image description here

...