如何在Java中导入ASCII文件?
我有密码:如何在Java中导入ASCII文件?,java,ascii,Java,Ascii,我有密码: package package; import java.io.BufferedReader; import java.io.FileReader; import java.util.ArrayList; import java.util.List; public class Test { private List<Integer> liczby = new ArrayList<Integer>(); public void dodaj
package package;
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
public class Test {
private List<Integer> liczby = new ArrayList<Integer>();
public void dodajLiczbe(int liczba) {
liczby.add(liczba);
}
public int wezLiczbe(int indeks) {
return liczby.get(indeks);
}
public int ileLiczb() {
return liczby.size();
}
public static void main(String[] args) {
Test w = new Test();
String nazwaPliku = "file.xyz";
try {
BufferedReader br = new BufferedReader(new FileReader(nazwaPliku));
String linia = null;
while ((linia = br.readLine()) != null) {
int liczba = Integer.parseInt(linia.trim());
w.dodajLiczbe(liczba);
}
} catch (Exception e) {
System.err.println("Wystapil blad przy wczytywaniu danych");
e.printStackTrace();
}
System.out.println("Wczytanych liczb: " + w.ileLiczb());
}
}
第一列必须带“.”。如果你有更好的选择,请告诉我。file.xyz中的第一行:
0.000 210 62
0.000 217 79
0.000 224 91
0.000 231 99
0.000 238 109
您正在调用
Integer.parseInt(linia.trim())
,但第一行不是有效的数字,因为它包含空格。您需要首先将linia.trim()
的输出解析为字符串
,然后再将其片段转换为整数
String[] parts = linia.trim().split(" ");
Integer firstNumber = Integer.parseInt(parts[0]);
@Pshemo建议的更好方法可能是使用该类。开始使用Scanner。它有
nextDouble
nextInt
方法,所以您不需要自己编写解析代码。如果您希望的是,
,而不是,
,则可能需要设置适当的区域设置(如locale.English)。“我无法将结果添加到我的列表”为什么?您是否有任何错误?您的liczby
列表被声明为ArrayList
,这意味着它只能存储字符串
,但在您的注释中,您说要存储int,这有点让人困惑。如果要将数字存储为文本,只需使用next()
而不是nextDouble()
或nextInt()
。但我还是不知道这是不是个好主意。也许描述一下在从文件中读入数据后,您想对这些数据做什么。是的,eclipse:当dodajLiczbe参数有nextDouble时,我应该将它改为double,与nextindt相同,但改为int参数。@JoeMichu它看起来像hasNextDouble
没有将0.000
视为正确的double
。如果您的语言环境期望Double具有,
而不是,
(并且根据您的代码,您的默认语言环境似乎是Polish,它期望,
)。要解决此问题,请将扫描仪的区域设置设置为一个期望值
的值,如locale.ENGLISH
(在读取任何数据之前执行此操作:input.useLocale(locale.ENGLISH);
)。好的,但当我尝试使用扫描仪时,ArrayList应该是整数?@JoeMichu如何将数据存储到该列表中?是否要存储所有元素?应如何处理double
值?你想全部忽略它们,还是忽略它们的分数部分?@Pshemo,我想以与文件中相同的顺序存储数据。我想存储所有元素,我有168 810行,所以我的列表中应该有3倍多的记录。
String[] parts = linia.trim().split(" ");
Integer firstNumber = Integer.parseInt(parts[0]);