将 .txt 文件中的数据读取和存储到数组中时出现问题
Issue with reading and storing data from .txt file into array
计划:
- 用户输入包含数字的文件名(每行 1 个)
- 读取文件并将数据存入StringBuffer
- StringBuffer转String类型
- String 是 split() 并存储在 String[]
- Double[] 已创建,并且 String[]
的 converts/stores 个元素
以上是我想要实现的;但是,该程序不起作用。
*看下面的例子...
class tester
{
public static int x = 0;
public static double[] dataArray = new double[x];//array storing elements
public static void main(String[] args) throws IOException
{
//userInput .txt
Scanner sc = new Scanner(System.in);
System.out.println("Enter filename:\n");
String name = sc.nextLine();
File file = new File(name);
FileReader fileReader = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(fileReader);
StringBuffer stringBuffer = new StringBuffer();
String newString = stringBuffer.toString();
String [] stringArray = newString.split("\n");
double [] dataArray = new double[stringArray.length];
for(int i=0 ; i < stringArray.length ; i++)
{
dataArray[i] = Double.parseDouble(stringArray[i]);
}
我有一个名为:Ben.txt 的文件,看起来像这样:
1
2
3
4
5
6
7
8
9
10
当我运行程序...
Enter filename:
c:/Ben.txt
Exception in thread "main" java.lang.NumberFormatException: empty String
at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
at sun.misc.FloatingDecimal.parseDouble(Unknown Source)
at java.lang.Double.parseDouble(Unknown Source)
at tester.main(tester.java:27)
正如 GiantTree 所说,您实际上根本没有在读取文件
将 newString 的定义更改为以下内容会给您带来一些进步。
String newString = bufferedReader.readLine();
您应该考虑的其他事项:
- 关闭您打开的资源
- 异常处理
- 遵循标准 class 命名约定
- 不需要初始化dataArray两次
问题是您实际上没有从文件中读取任何内容。您完成了所有设置,但没有阅读。
所以当你有:
File file = new File(name);
FileReader fileReader = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(fileReader);
StringBuffer stringBuffer = new StringBuffer();
String newString = stringBuffer.toString();
这里我不认为你真的需要一个StringBuffer,你所需要的add/replace就是这个
String str;
str = bufferedReader.readLine();
如果你想读取整个文件,你所要做的就是使用 readLine() 遍历整个文件。
计划:
- 用户输入包含数字的文件名(每行 1 个)
- 读取文件并将数据存入StringBuffer
- StringBuffer转String类型
- String 是 split() 并存储在 String[]
- Double[] 已创建,并且 String[] 的 converts/stores 个元素
以上是我想要实现的;但是,该程序不起作用。 *看下面的例子...
class tester
{
public static int x = 0;
public static double[] dataArray = new double[x];//array storing elements
public static void main(String[] args) throws IOException
{
//userInput .txt
Scanner sc = new Scanner(System.in);
System.out.println("Enter filename:\n");
String name = sc.nextLine();
File file = new File(name);
FileReader fileReader = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(fileReader);
StringBuffer stringBuffer = new StringBuffer();
String newString = stringBuffer.toString();
String [] stringArray = newString.split("\n");
double [] dataArray = new double[stringArray.length];
for(int i=0 ; i < stringArray.length ; i++)
{
dataArray[i] = Double.parseDouble(stringArray[i]);
}
我有一个名为:Ben.txt 的文件,看起来像这样:
1
2
3
4
5
6
7
8
9
10
当我运行程序...
Enter filename:
c:/Ben.txt
Exception in thread "main" java.lang.NumberFormatException: empty String
at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
at sun.misc.FloatingDecimal.parseDouble(Unknown Source)
at java.lang.Double.parseDouble(Unknown Source)
at tester.main(tester.java:27)
正如 GiantTree 所说,您实际上根本没有在读取文件
将 newString 的定义更改为以下内容会给您带来一些进步。
String newString = bufferedReader.readLine();
您应该考虑的其他事项:
- 关闭您打开的资源
- 异常处理
- 遵循标准 class 命名约定
- 不需要初始化dataArray两次
问题是您实际上没有从文件中读取任何内容。您完成了所有设置,但没有阅读。
所以当你有:
File file = new File(name);
FileReader fileReader = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(fileReader);
StringBuffer stringBuffer = new StringBuffer();
String newString = stringBuffer.toString();
这里我不认为你真的需要一个StringBuffer,你所需要的add/replace就是这个
String str;
str = bufferedReader.readLine();
如果你想读取整个文件,你所要做的就是使用 readLine() 遍历整个文件。