JAVA:读取.txt文件并将其存储到数组中
我已经有了下面的代码,它甚至可以添加doubleJAVA:读取.txt文件并将其存储到数组中,java,arrays,file,loops,Java,Arrays,File,Loops,我已经有了下面的代码,它甚至可以添加double 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 fileR
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
例:
一,
二,
三,
四,
五,
如何将这些双精度数据存储到数组中?您可以使用ArrayList:
ArrayList<Double> doubles = new ArrayList<Double>();
while ((line = bufferedReader.readLine()) != null)
{
doubles.add(Double.parseDouble(line));
}
ArrayList doubles=新的ArrayList();
而((line=bufferedReader.readLine())!=null)
{
doubles.add(Double.parseDouble(line));
}
基本解决方案
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
}
}
ArrayList doubles=新的ArrayList();
而((line=bufferedReader.readLine())!=null)
{
stringBuffer.append(行+“\n”);
试一试{
double value=double.parseDouble(行);
双倍。加(值);
}捕获(NullPointerException e){
//空字符串
}捕获(数字格式){
//当前行上没有可解析项
}
}
我不明白这个问题……只要在读取文件时创建一个存储行内容的数组。如果您想坚持只使用数组,请将StringBuffer转换为String[],如下所示:
String [] stringArray = stringBuffer.split("\n");
然后将字符串数组转换为双数组:
Double [] doubleArray = new Double[stringArray.size];
for(int i=0 : i < stringArray.size : i++){
doubleArray[i] = Doube.parseDouble(stringArray[i]);
}
Double[]doubleArray=新的双精度[stringArray.size];
对于(int i=0:i
如果必须使用StringBuffer,则可以按StringTokenizer类将其划分为数组。或者,您可以使用String代替StringBuffer,然后
split()
方法将与反限制器一起工作。我以前从未使用过ArrayList。我注意到上面没有声明数组,所以我想知道如何将上述代码实现到特定数组中?将最终结果保存到字符串中,使用String.split()将其拆分为数组。对于答案,我很抱歉,误解了您要查找的内容。使用ArrayList,您根本不需要StringBuffer。我在代码中实例化了数组,您可以准确地复制它。如果您需要打印ArrayList的值的帮助,只需谷歌“打印ArrayList的值”即可,谢谢。我想继续使用数组,我使用了你的代码。但是它告诉我方法split(“\n”)是未定义的。此外,我不能直接将字符串数组中的元素转换为双数组dataArray[I]=stringArray[I];我已经更新了我的答案。字符串数组现在应该转换为Double。对于split(),您有两个选项,如主文章中突出显示的。