Как я могу прочитать комбинацию цифр и букв из текстового файла java

#java #file #java.util.scanner

Вопрос:

У меня есть этот текстовый файл, содержащий различную информацию, до сих пор я мог прочитать все, кроме сведений об адресе, поскольку они разделены пробелами и содержат как цифры, так и буквы, поэтому я немного не знаю, что делать, я пытался прочитать его как int, но я знаю, что это не сработает.

Это мой код:

 public void methodName() {
File vData = new File("src/volunteer_data.txt");    // Create file object
try {                                                        // try catch to handle exception
    Scanner readFile = new Scanner(vData);                   // Create scanner object
    while (readFile.hasNextLine()) {                         //
        int volunteerID = readFile.nextInt();                // Read volunteerID as an int
        String vName = readFile.nextLine();                  // Read volunteer name as string
        // DATATYPE address = readFile.nextSOMETHING();      // Read address as ....
        String contact = readFile.nextLine();                // Read contact number as a string
    }
    readFile.close();                                        // Close scanner
} catch(FileNotFoundException e) {                             // Throw exception and stop program if error found
    e.printStackTrace();
}
 

Вот текстовый файл, из которого я читаю. Он разделен табуляцией:

 VolunteerID Name    Address Contact
050 John    24 Willow Street    905-747-0876
042 Emily   362 Sunset Avenue   905-323-1234
013 Alice   16 Wonderland Street    905-678-0987
071 Arthur  36 York Road    905-242-5643
060 Daniel  125 Ottawa Street   905-666-3290
055 Peppa   64 Great Britain Blvd   905-212-4365
024 Sean    909 Green Avenue    905-232-5445
077 Kim 678 Grape Garden    905-080-7641
098 Patrick 126 Oxford Street   905-099-9535
092 Laura   45 Mill Street  905-244-0086
008 Gary    84 California Street    905-767-3456
 

Комментарии:

1. Я думаю, вы можете использовать сплит.

2. Разделены ли столбцы на вкладке файл?

3. да, они просто странно разнесены, извините

4. Это не число. Все они являются буквенно-цифровыми значениями.

5. что вы имеете в виду под этим? в какой части? или вы имеете в виду, что все цифры являются буквенно-цифровыми клапанами

Ответ №1:

Мой совет — забудьте сканировать каждую колонку отдельно с помощью nextInt() etc. Это приводит к боли и страданиям в долгосрочной перспективе. Вместо этого сканируйте всю строку и работайте со строкой: разделите ее на несколько String[] столбцов, затем работайте со столбцами отдельно:

 readFile.nextLine(); // skip heading line (if there is one)
while (readFile.hasNextLine()) {  
    String line = readFile.nextLine(); // read whole line
    String[] columns = line.split("t"); // split line on tab char

    // get each column into variables
    int volunteerID = Integer.parseInt(columns[0]);
    String vName = columns[1];
    String address = columns[2]; // no big deal
    String contact = columns[3];

    // do something with variables
}
 

Строго говоря, вам даже не нужны переменные. Вы могли бы работать непосредственно с массивом и индексом, но их гораздо легче читать и отлаживать, когда вы используете переменные с правильными именами.