为了账号安全,请及时绑定邮箱和手机立即绑定

可能由空白字符引起的显示数组问题

可能由空白字符引起的显示数组问题

DIEA 2022-05-21 17:26:28
我正在尝试导入带有汽车信息的 txt 文件并将字符串分成数组,然后显示它们。门的数量与下一个车牌相结合。尝试了几种方法来消除我认为导致问题但没有运气的空白字符。空白字符 我的代码显示此结果:Number Plate : AG53DBO Car Type : Mercedes Engine Size : 1000 Colour : (255:0:0) No. of Doors : 4MD17WBWNumber Plate : 4MD17WBW Car Type : Volkswagen Engine Size : 2300 Colour : (0:0:255) No. of Doors : 5ED03HSH代码:public class Application {    public static void main(String[] args) throws IOException {        ///// ---- Import File ---- /////        String fileName =                "C:\\Users\\beng\\eclipse-workspace\\Assignment Trailblazer\\Car Data";        BufferedReader reader = new BufferedReader(new FileReader(fileName));        StringBuilder stringBuilder = new StringBuilder();        String line = null;        String ls = System.getProperty("line.separator");        while ((line = reader.readLine()) != null) {            stringBuilder.append(line);            stringBuilder.append(ls);            }        reader.close();        String content = stringBuilder.toString();        ///// ---- Split file into array ---- /////        String[] dataList = content.split(",");        // Display array        for (String temp : dataList) {//          System.out.println(temp);        }        ArrayList<Car> carArray = new ArrayList();        // Loop variables        int listLength = 1;        int arrayPosition = 0;        // (dataList.length/5)        while (listLength < 5) {            Car y = new Car(dataList, arrayPosition);            carArray.add(y);            listLength++;            arrayPosition += 4;        }        for (Car temp : carArray) {            System.out.println(temp.displayCar());        }    }}和public class Car {    String[] data;    private String modelUnpro;    private String engineSizeUnpro;    private String registrationUnpro;    private String colourUnpro;    private String doorNoUnpro;    }
查看完整描述

2 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

从 while 循环中删除行分隔符。


        String fileName = "D:\\Files\\a.txt";

        BufferedReader reader = new BufferedReader(new FileReader(fileName));

        StringBuilder stringBuilder = new StringBuilder();

        String line = null;

        while ((line = reader.readLine()) != null) {

            stringBuilder.append(line.trim());

        }

        reader.close();

        String content = stringBuilder.toString();

        String[] dataList = content.split(",");

        ArrayList<Car> carArray = new ArrayList();

        int listLength = 1;

        int arrayPosition = 0;

        // (dataList.length/5)

        while (listLength < 3) {

            Car y = new Car(dataList, arrayPosition);

            carArray.add(y);

            listLength++;

            arrayPosition += 4;

        }

        for (Car temp : carArray) {

            System.out.println(temp.displayCar());

        }


查看完整回答
反对 回复 2022-05-21
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

在 StringBuilder 中,您收集所有行:


AG53DBO,Mercedes,1000,(255:0:0),4\r\nMD17WBW,Volkswagen,2300,(0:0:255),5\r\n...

这个字符串应该首先被吐上ls- 然后你会有用逗号分隔的字段的行。


现在只需用逗号分割就会导致数组元素加倍4\r\nMD17WBW。


就像是:


String fileName =

            "C:\\Users\\beng\\eclipse-workspace\\Assignment Trailblazer\\Car Data";

Path path = Paths.get(fileName);

List<String> lines = Files.readAllLines(path); // Without line ending.


List<Car> cars = new ArrayList<>();

for (String line : lines) {

    String[] data = line.split(",");

    Car car = new Car(data);

    cars.add(car);

}

Path、Paths 尤其是Files是非常方便的类。使用 java Streams 还可以缩写如下:


String fileName =

            "C:\\Users\\beng\\eclipse-workspace\\Assignment Trailblazer\\Car Data";

Path path = Paths.get(fileName);

List<Car> cars = Files.lines(path)     // Stream<String>

    .map(line -> line.split(","))      // Stream<String[]>

    .map(Car::new)                     // Stream<Car>

    .collect(Collectors.toList());     // List<Car>

  1. 这里.lines返回Stream<String>文件中的行(游标),没有行分隔符。

  2. 然后.map(l -> l.split(","))分割每一行。

  3. 然后在Car(String[])字符串数组上调用构造函数。

  4. 然后将结果收集在一个列表中。


查看完整回答
反对 回复 2022-05-21
  • 2 回答
  • 0 关注
  • 102 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信