我已经拥有以下代码,只要附加双打即可。
Scanner sc1 = new Scanner(System.in);
try {
System.out.println("Enter filename:");
String name = sc1.nextLine();//determines name of file
File file = new File(name);//creates above file
FileReader fileReader = new FileReader(file);//file is read
BufferedReader bufferedReader = new BufferedReader(fileReader );//BufferReader reads file, line by line
StringBuffer stringBuffer = new StringBuffer();//appended to StringBuffer
String line;//reads each
while ((line = bufferedReader.readLine()) != null)
{
stringBuffer.append(line + "\n");
}
fileReader.close();
System.out.println("Contents of file:");
System.out.println(stringBuffer.toString());
}
catch (IOException e)
{
e.printStackTrace();
}
代码读取每行都有一个double的文件
例如:
1
2
3
4
5
...
如何将这些双打中的每一个存储到数组中?
答案 0 :(得分:2)
您可以使用ArrayList:
ArrayList<Double> doubles = new ArrayList<Double>();
while ((line = bufferedReader.readLine()) != null)
{
doubles.add(Double.parseDouble(line));
}
答案 1 :(得分:2)
如果您想坚持只使用Array,请将StringBuffer转换为String [],如下所示:
String [] stringArray = stringBuffer.split("\n");
然后将字符串数组转换为double数组:
Double [] doubleArray = new Double[stringArray.size];
for(int i=0 : i < stringArray.size : i++){
doubleArray[i] = Doube.parseDouble(stringArray[i]);
}
如果必须使用StringBuffer,可以通过StringTokenizer类分成数组
或者,您可以使用String而不是StringBuffer,然后split()
方法将使用de-limiter。
答案 2 :(得分:1)
基本解决方案
ArrayList<Double> doubles = new ArrayList<>();
while ((line = bufferedReader.readLine()) != null)
{
stringBuffer.append(line + "\n");
try{
double value = Double.parseDouble(line );
doubles.add(value);
} catch(NullPointerException e){
//null string
} catch(NumberFormatException e){
//no parsable on the current line
}
}
答案 3 :(得分:0)
我没有遇到问题......只需创建一个数组,在读取文件时存储该行的内容。