我需要弄清楚如何在一维数组中获取乘客的文本文件,并按姓名、街道地址、城市、州、重量和座位号进行拆分。我尝试使用 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;
}