Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从列表字符串存储到另一个数组列表_Java - Fatal编程技术网

Java 从列表字符串存储到另一个数组列表

Java 从列表字符串存储到另一个数组列表,java,Java,我有这样一个txt文件,其中包含经度和纬度坐标: 120.12 22.233 100 23.12 98 19.12 如果我想读取该文件,我将执行以下操作: List<String> lines = Files.readAllLines(Paths.get(fileName)); System.out.println("LINE: " + lines.get(0)); 我想将txt文件中的所有值存储到列表中 因此,我需要一个函数来加载文件: public sta

我有这样一个txt文件,其中包含经度和纬度坐标:

120.12    22.233
100    23.12
98     19.12
如果我想读取该文件,我将执行以下操作:

List<String> lines = Files.readAllLines(Paths.get(fileName));
System.out.println("LINE: " + lines.get(0));
我想将txt文件中的所有值存储到
列表中

因此,我需要一个函数来加载文件:

public static List<GisPoints> loadData(String fileName) throws IOException {

      List<String> lines = Files.readAllLines(Paths.get(fileName));

      List<GisPoints> points = new ArrayList<GisPoints>();

      //for (int i = 0; i < lines.size(); i++) {

     // }

      return points;

  }
公共静态列表加载数据(字符串文件名)引发IOException{
列表行=Files.readAllLines(path.get(fileName));
列表点=新的ArrayList();
//对于(int i=0;i
正如我所说,现在我只是在阅读每一行,例如
行[0]=12022


我想将线[0]经度存储到点[0].setLon(),将线[0]纬度存储到点[0].setLat()。

看一下类扫描程序;Scanner有很多有用的工具来读取和解析字符串。

看看类Scanner;Scanner有很多有用的工具来读取和解析字符串

for (String str : lines) {
    String[] helpArray = str.split("\\s+"); // or whatever is betweeen
                                            // the two numbers
    points.add(new GisPoints(Double.valueOf(helpArray[0].trim()), Double.valueOf(helpArray[1].trim())));
}
这应该能满足您的需要。仅当文件中只有数字时才有效。如果你需要进一步的帮助,你可以回去报到

这应该能满足您的需要。仅当文件中只有数字时才有效。如果你需要进一步的帮助,你可以回去报到

我想将线[0]经度存储到点[0].setLon(),将线[0]纬度存储到点[0].setLat()

你现在不需要二传手。您已经有了一个很好的构造函数来接收它们

只需在将like分成两部分后创建一个对象

 for (int i = 0; i < lines.size(); i++) { 
      String[] latlang = lines.get(i).split("\\s+");
      GisPoints g = new GisPoints(Double.parseDouble(latlang[0].trim()),Double.parseDouble(latlang[1].trim()));
      points.add(g)
    }
for(inti=0;i
我想将线[0]经度存储到点[0].setLon(),将线[0]纬度存储到点[0].setLat()

你现在不需要二传手。您已经有了一个很好的构造函数来接收它们

只需在将like分成两部分后创建一个对象

 for (int i = 0; i < lines.size(); i++) { 
      String[] latlang = lines.get(i).split("\\s+");
      GisPoints g = new GisPoints(Double.parseDouble(latlang[0].trim()),Double.parseDouble(latlang[1].trim()));
      points.add(g)
    }
for(inti=0;i
我认为
拆分
可以解决您的问题:

String arr[] = lines[i].split("\\s+");
GisPoints p = new GisPoints(Double.parseDouble(arr[0]), Double.parseDouble(arr[1]));

我认为
split
可以解决您的问题:

String arr[] = lines[i].split("\\s+");
GisPoints p = new GisPoints(Double.parseDouble(arr[0]), Double.parseDouble(arr[1]));

您可能希望使用java8流执行此操作:

 List<GisPoint> points = lines.stream()
        .map(s -> s.split("\\s+"))
        .map(array -> Arrays.stream(array)
            .map(String::trim)
            .filter(s -> !s.isEmpty())
            .mapToDouble(Double::parseDouble)
            .toArray()
        )
        .map(array -> new GisPoint(array[0], array[1]))
        .collect(Collectors.toList());
List points=lines.stream()
.map(s->s.split(\\s+))
.map(数组->数组.stream(数组)
.map(字符串::trim)
.filter(s->!s.isEmpty())
.mapToDouble(Double::parseDouble)
.toArray()
)
.map(数组->新建GisPoint(数组[0],数组[1]))
.collect(Collectors.toList());

您可能希望使用java8流执行此操作:

 List<GisPoint> points = lines.stream()
        .map(s -> s.split("\\s+"))
        .map(array -> Arrays.stream(array)
            .map(String::trim)
            .filter(s -> !s.isEmpty())
            .mapToDouble(Double::parseDouble)
            .toArray()
        )
        .map(array -> new GisPoint(array[0], array[1]))
        .collect(Collectors.toList());
List points=lines.stream()
.map(s->s.split(\\s+))
.map(数组->数组.stream(数组)
.map(字符串::trim)
.filter(s->!s.isEmpty())
.mapToDouble(Double::parseDouble)
.toArray()
)
.map(数组->新建GisPoint(数组[0],数组[1]))
.collect(Collectors.toList());

看看正则表达式:

import java.util.regex.*;

public class HelloWorld{

     public static void main(String []args){
        String line = "98 19";
        Pattern pattern = Pattern.compile("^(\\d+)\\s*(\\d+)$");
        Matcher matcher = pattern.matcher(line);
        while (matcher.find()) {
            System.out.println("group 1: " + matcher.group(1));
            System.out.println("group 2: " + matcher.group(2));
        }
     }
}

看看正则表达式:

import java.util.regex.*;

public class HelloWorld{

     public static void main(String []args){
        String line = "98 19";
        Pattern pattern = Pattern.compile("^(\\d+)\\s*(\\d+)$");
        Matcher matcher = pattern.matcher(line);
        while (matcher.find()) {
            System.out.println("group 1: " + matcher.group(1));
            System.out.println("group 2: " + matcher.group(2));
        }
     }
}

它看起来是这样的:

    for (int i = 0; i < lines.size(); i++)
    {
        String line = lines.get(i);

        String[] values = line.split("\\s+");

        double lat = Double.parseDouble(values[0]);
        double lon = Double.parseDouble(values[1]);

        points.add(new GisPoints(lat, lon));
    }
for(int i=0;i
它看起来像这样:

    for (int i = 0; i < lines.size(); i++)
    {
        String line = lines.get(i);

        String[] values = line.split("\\s+");

        double lat = Double.parseDouble(values[0]);
        double lon = Double.parseDouble(values[1]);

        points.add(new GisPoints(lat, lon));
    }
for(int i=0;i
这是一个使用String.split()的简单解决方案

可以从loadData()方法调用此方法。
我希望这个解决方案是有帮助的。祝你好运

这是一个使用String.split()的简单解决方案

可以从loadData()方法调用此方法。
我希望这个解决方案是有帮助的。祝你好运

您已经尝试了什么?因为您的文件只包含int,所以可以在Scanner中使用nextInt方法class@AhmadAlsanie:它将不仅包含ints@AhmadAlsanie为什么OP需要扫描仪,因为他已经读取了文件并得到了行?我不明白你的意思。你已经试过什么了?因为你的文件只包含int,所以你可以在Scanner中使用nextInt方法class@AhmadAlsanie:它将不仅包含ints@AhmadAlsanie为什么OP需要扫描仪,因为他已经读取了文件并得到了行?我不明白你的意思。这是一个很好的建议,但不是一个完整的答案。这将是一个最好的评论(当然,如果你打算改进它,我想这没关系),你可以添加一些有用的代码片段到OP…否则它应该是一个评论我必须有50个声誉评论的问题,我没有。这是一项任务,我认为他或她可以自己解决,因此我没有详细说明,只是为他或她指出了正确的方向。请放心,如果我有50个代表,这将只是一个评论:-)这是一个很好的建议,但不是一个完整的答案。这将是一个最好的评论(当然,如果你打算改进它,我想这没关系),你可以添加一些有用的代码片段到OP…否则它应该是一个评论我必须有50个声誉评论的问题,我没有。这是一项任务,我认为他或她可以自己解决,因此我没有详细说明,只是为他或她指出了正确的方向。请放心,如果我有50个代表,这将只是一个评论:-)
arr[0]
is String。不是双精度。
arr[0]
是字符串。不是双重的。我想你忘了分开:)@SomeJ