Попытка чтения определенной строки из текстового файла с помощью пользовательского ввода, используя Array, а не ArrayList - PullRequest
0 голосов
/ 23 сентября 2019

Я выяснил, как читать, хранить и отображать содержимое из текстового файла в массив, но моя проблема заключается в том, чтобы выводить только определенную строку, когда пользователь нажимает число ... например, если пользователь вводит 3,это должно показать все в третьей строке текстового файла .. Вот фрагмент того, что у меня есть до сих пор.текстовый файл будет содержать что-то вроде john, doe, johndoe@gmail.com, 10101, blue, 342.21.Спасибо!

public static void readLine(Record[] objects) 
throws FileNotFoundException {

    Scanner in = new Scanner(System.in);
    File fileobject = new File(filename);
    Scanner input = new Scanner(fileobject);

        String[] array;
        System.out.println("Enter the record you would like to see: ");
        int userChoice = in.nextInt();
        for (int i = 0; i < userChoice; i++) {
                objects[i] = new Record();
                array = input.nextLine().replaceAll(" ", "").split(",");

                objects[i].firstname = array[0];
                String name = array[0];

                objects[i].lastname = array[1];
                String lastname = array[1];

                objects[i].email = array[2];
                String email = array[2];

                objects[i].idnumber = Double.parseDouble(array[3]);
                double idnumber = Double.parseDouble(array[3]);

                objects[i].color = array[4];
                String color = array[4];

                objects[i].balance = Double.parseDouble(array[5]);
                double balance = Double.parseDouble(array[5]);


                passThis(name, lastname, email, idnumber, color, balance, userChoice);
        }      
    }

    public static void passThis(String firstname, String lastname, String email, double idnumber, String color, double balance, int userChoice) {

           System.out.println(firstname + " " + " " + lastname + " " + email + " " + (int)idnumber + " " + color + " " + balance);

    }

Ответы [ 2 ]

0 голосов
/ 23 сентября 2019

Предложение: не используйте сканер для чтения файлов.Это на самом деле довольно медленно, однако, скорее всего, это хорошо для вашего варианта использования.Вы можете попробовать что-то вроде этого:

Scanner in = new Scanner(System.in);
System.out.println("Enter the record you would like to see: ");
int userChoice = in.nextInt();

// Try With Resources is used here to auto-close the reader.    
try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
    String line;
    int counter = 0;
    // String[] myArray = {};
    while ((line = reader.readLine().trim()) != null) {
        if (line.equals("")) {
            continue;
        }
        counter++;
        if (counter == userChoice) {
            // myArray = line.split("\\s{0,},\\s{0,}");
            // System.out.println(Arrays.toString(myArray).replaceAll("[,\\[\\]]", ""));
            // If you want to use an Array then un-comment the 
            // 3 lines above and comment the line below.
            System.out.println(line.replace(", ", " "));
            break;
        }
    }
}
catch (FileNotFoundException ex) {
    System.err.println(ex.getMessage());
}
catch (IOException ex) {
    System.err.println(ex.getMessage());
}
0 голосов
/ 23 сентября 2019
 int userChoice = in.nextInt();
 for (int i = 0; i < userChoice; i++) {

Я думаю, вам не нужна for петля.Просто используйте userChoise как [userChoise-1].

...