我正在尝试将文件中的坐标读取到数组中。
每个坐标都有一个id,一个Reload configuration from disk
和一个x-value
。
文件采用以下格式:y-value
示例:
id position.x position.y
注意:有4行包含总共4个坐标。
我创建了类292961234 1376.42 618.056
29535583 3525.73 530.522
256351971 836.003 3563.33
20992560 4179.74 3074.27
,其构造函数期望Node
。
这是NodeList类,应该具有保存节点的数组属性:
(int id, double x, double y)
package .....;
import java.io.File;
import java.util.Iterator;
import java.util.Locale;
import java.util.Scanner;
public class NodeList implements Iterable<Node> {
private Node[] nodes = getNodes();
@Override
public Iterator<Node> iterator() {
return null;
}
public Node[] getNodes() {
Node[] result;
File f;
Scanner scanner;
try {
f = new File("nodes.txt");
Scanner s = new Scanner(f);
int ctr = 0;
while (s.hasNextLine()) {
ctr++;
s.nextLine();
}
result = new Node[ctr];
}
catch (Exception e) {
return null;
}
try {
scanner = new Scanner(f);
}
catch (Exception e) {
return null;
}
Locale.setDefault(new Locale("C"));
for(int i = 0; i < result.length; i++) {
int id = scanner.nextInt();
double x = scanner.nextDouble();
double y = scanner.nextDouble();
result[i] = new Node(id,x,y);
}
return result;
}
public static void main(String[] args) {
NodeList nl = new NodeList();
}
}
类:
Node
当调用包含所示代码的方法时,我得到以下信息 例外:
package ...;
public class Node {
private int id;
private double x;
private double y;
public Node(int id, double x, double y){
this.id = id;
this.x = x;
this.y = y;
}
public int getId(){
return id;
}
public double getX(){
return x;
}
public double getY(){
return y;
}
}
链接到包含以下节点的文件:https://pastebin.com/zhzp3DTi
答案 0 :(得分:0)
可能是因为使用了错误的语言环境。 我认为“ C”不是有效的语言环境,应该是语言代码。
您可以尝试使用
scanner.useLocale(Locale.ROOT);
这在我的机器上正常工作:
public static void main(String[] args) {
// TODO code application logic here
String s = "292961234 1376.42 618.056\n" +
"29535583 3525.73 530.522\n" +
"256351971 836.003 3563.33\n" +
"20992560 4179.74 3074.27";
Scanner scanner = new Scanner(s);
scanner.useLocale(Locale.ROOT);
for(int i = 0; i < 4; i++) {
int id = scanner.nextInt();
double x = scanner.nextDouble();
double y = scanner.nextDouble();
System.out.println(id+" "+x+" "+y);
}
}