gpt4 book ai didi

java - 解析数据结构中不同大小的数组 - Java

转载 作者:行者123 更新时间:2023-12-01 05:49:05 25 4
gpt4 key购买 nike

作为一名新手 Java 程序员,我在尝试分析我的个人项目的数据时遇到了相当高的障碍。我有一条文字文件包含约 33.5k 数据点,格式如下:

PointNumber:        33530  
Lat: 8.99167773897820e-001
Lon: 6.20173660875318e+000
Alt: 0.00000000000000e+000
NumberOfAccesses: 4
0 4.80784667215499e+003 4.80872732950073e+003
0 1.05264215520092e+004 1.05273043378212e+004
1 1.65167780853593e+004 1.65185840063538e+004
1 6.52228387069902e+004 6.52246514228552e+004

最后几行,即以 0 或 1 开头的行,对应于“访问次数”行中的整数。我想通过解析文件并打印纬度、经度以及仅具有超过 1 次访问的 PointNumbers 的每个访问实例之后的两个值。

我不确定是从扫描仪或分词器开始还是编译模式。哪种技术可以更轻松地仅存储有效的 PointNumber?直觉告诉我解析文件,将相关值放入对象中:

PointNumber num1 = new PointNumber(lat, lon, accesses[]);

如果访问数组长度> 1,则循环遍历对象并打印对象的值。另一方面,最好忽略不符合要求的信息。是否可以通过在解析时检查 NumberOfAccesses 值然后跳转到下一个 string.startsWith("PointNumber:") 如果该值 <= 1 来完成?

我有一种感觉,这个社区的绝大多数人都会尝试引导我转向 XML 或 YAML,但我真的更喜欢尝试在 Java 中解决这个问题。任何建议、方向或适用的例子总是非常感激。

最佳答案

当您有要解析的输入时,您可以循环遍历此内容

// Assuming you have a scanner object named s and pointed to your file:

// PointNumber: 33530
int pointNumber = 0;
while(!s.next().equals("PointNumber:")) {
pointNumber = s.nextInt();
}

// Lat: 8.99167773897820e-001
double lat = 0.0;
while(!s.next().equals("Lat:")) {
lat = s.nextDouble();
}

// Lon: 6.20173660875318e+000
double lon = 0.0;
while(!s.next().equals("Lon:")) {
lon = s.nextDouble();
}

// Alt: 0.00000000000000e+000
double alt = 0.0;
while(!s.next().equals("Alt:")) {
alt = s.nextDouble();
}

// NumberOfAccesses: 4
int numberOfAccesses = 0;
while(!s.next().equals("NumberOfAccesses:")) {
numberOfAccesses = s.nextInt();
}

// 0 4.80784667215499e+003 4.80872732950073e+003
// 0 1.05264215520092e+004 1.05273043378212e+004
// 1 1.65167780853593e+004 1.65185840063538e+004
// 1 6.52228387069902e+004 6.52246514228552e+004

// Assuming you have defined an Access class
LinkedList<Access> accesses = new LinkedList<Access>();
for(int i = 0; i < numberOfAccesses; i++) {
// Assuming this is the constructor for the Access class
accesses.add(new Access(s.nextInt(), s.nextDouble(), s.nextDouble()));
}

然后您可以将您真正想要的所有数据添加到“PointNumber”列表中,然后打印或从中执行任何操作。

关于java - 解析数据结构中不同大小的数组 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5162019/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com