如何获取一维数组中的文本文件



我需要弄清楚如何在一维数组中获取乘客的文本文件,并按姓名、街道地址、城市、州、重量和座位号进行拆分。我尝试使用 while 循环和 for 循环来执行此操作,但我无法进行任何事情。这就是我目前所拥有的。

这是我的主要方法

 import java.util.Scanner; 
 import java.io.*; 

 public class Trip_Jarrad 
{
    public static void main(String[]args) throws FileNotFoundException
    {
     Scanner file = new Scanner(new File("PassengerList.txt")); 
     Passengers[] passengers = new Passengers[16]; 
        }
         }

这是我的对象类

public class Passengers {
String fullName;
String streetAddress;
String city; 
String state;
double weight; 
String seatNum; 
public Passengers(String n, String s, String c, String st, double w, String seat) {
fullName = n; 
streetAddress = s; 
city = c; 
state = s; 
weight = w; 
seatNum = seat; 
}
public String getName() {
    return fullName; 
}
public String getAddress() {
    return streetAddress; 
}
public String getCity() {
    return city; 
}
public String getState() {
    return state; 
}
public double getWeight() {
    return weight; 
}
public String getSeat() {
    return seatNum; 
}

public String toString() {
    return " " +fullName+ "" +streetAddress+ "" +city+ "" +state+ "" +weight+ "" + seatNum; 
}

这是我试图读取的文本文件。

  Jarrad/Self/9 Ely Trail/Yodaloo, Ga/231.2/ 
  Paul/Murray/123 Chenango Street/Montrose, Pa/212.3/
  Allison/Lewis/1884 Vestal Parkway/Vestal, Ny/108.2/
  Theresa/Grabowski/296 Oak Street/Goshen, Ny/121.1/
  David/Parker/133 Pennsylvania Ave/Springfield, Ma/189.7/
  Stephen/Post/722 Newark Valley Road/Owego, Ny/245.0/
  Emily/Post/722 Newark Valley Road/Owego, Ny/174.9/
  Deborah/George/143 Alpine Road/Las Vegas, Nv/145.2/
  Allen/George/143 Alpine Road/Las Vegas, Nv/312.7/
  Judy/Hellman/18801 Jefferson Ave/Brentwood, Ca/134.4/
  Joel/Aylesworth/56 Washington Street/Akron, Oh/322.2/
  Marci/Podder/1884A San Clemente Ave/Apple Valley, Ca/113.1/
  Allen/Parker/129 Trenton Street/Springfield, Ma/134.3/
  Trisha/Johnson/2978 Utica Avenue/Syracuse, Ny/167.2/
  Mike/Squier/546 Owego Avenue/Maine, Ny/113.4/
  Meg/Merwin/123 Appleton Lane/Endicott, Ny/114.8 

要在 Java 中拆分字符串,请使用 String.split(( 方法:

String s = "Jarrad/Self/9 Ely Trail/Yodaloo, Ga/231.2/";
String[] array_split = s.split("/");
// the array is {"Jarrad", "Self", "9 Ely Trail", "Yodaloo", "Ga", "231.2"}

使用 NIO 文件 API,您可以轻松地将线条转换为Passenger对象列表:

List<Passengers> passengers = java.nio.file.Files
    .lines(java.nio.file.Paths.get( "PassengerList.txt"))
    .map(line -> line.trim().split("/"))
    .map(arr -> new Passengers(arr[0], arr[1], arr[2], arr[3], Double.parseDouble(arr[4]), arr[5]))
    .collect(java.util.stream.Collectors.toList());

首先我们调用sc.nextLine()File中获取整行。

然后我们使用 String[] split(String regex) 将术语拆分为其单独的值并将它们传递给构造函数

Scanner sc;
Passenger[] passengers = new Passenger[16];
for (int i = 0; i < passengers.length; i++) {
    String[] values = sc.nextLine().split("/");
    String fullName = values[0] + values[1];
    // todo: init remaining values
    Passenger passenger; // todo: initialise
    passengers[i] = passenger;
}

最新更新