[英]reading and writing files java
我有一个浮点数组,我在其中存储了一些来自用户输入的值。 我有 2 种方法,一种将存储在数组中的值保存到文本文件中,每个值在一行中,第二种方法再次重新读取值并将它们存储在数组中。 例如,用户输入是 1,2,3,4 我将它们保存到一个文本文件然后我读取相同的 txt 文件现在我的数组应该显示 8 个元素 1,2,3,4,1,2,3, 4. 我遇到的问题是,当我将这些元素存储在 txt 文件中时,它会存储它们并在它们下面添加 100 个零,当我调用第二种方法从文件中重新读取这些元素时,它会读取零,所以当我'正在显示我的数组中的元素,当它应该显示 1,2,3,4,1,2,3,4 时它显示 0,0,0,0。 什么可能导致我这个问题?
public void saveValuesToFile(Scanner keyboard) {
try {
System.out.println("Enter name of file: ");
String fileName = keyboard.next();
File file = new File(fileName);
PrintWriter outputFile = new PrintWriter(file);
for(int i = 0; i < numbers.length; i++) {
outputFile.println(numbers[i]);
}
outputFile.close();
} catch (FileNotFoundException e) {
System.out.println("file dont exist");
e.printStackTrace();
}
}
public void readFromFile(Scanner keyboard) {
System.out.println("Enter file name");
String fileName = keyboard.next();
BufferedReader reader = null;
try {
reader = new BufferedReader (new FileReader(fileName));
String input = null;
while ((input = reader.readLine()) != null) {
for (int i = 0; i < numbers.length; i++) {
numbers[i] = Float.parseFloat(input);
}
}
}
catch (NumberFormatException | IOException e) {
e.printStackTrace();
}
}
您可以使用附加的 println 语句检查为什么正确填充了数组。 在您的版本中,数组的每个元素都填充有从文件中读取的相同元素。 如果删除内部循环,数组将被正确填充。
int i=0;
while ((input = reader.readLine()) != null) {
numbers[i] = Float.parseFloat(input);
System.out.println((i) + "::"+numbers[i]);
i++;
}
添加零是因为您将数字保存为float 。 如果您将 integer 3存储在浮点变量中,它将被转换为等效的浮点数,即3.0
此外,这里不需要两个循环,
while ((input = reader.readLine()) != null) {
for (int i = 0; i < numbers.length; i++) {
numbers[i] = Float.parseFloat(input);
}
您可以改为执行以下操作,
int i = 0;
while ((input = reader.readLine()) != null) {
numbers[i] = Float.parseFloat(input);
i++;
}
以下是您想要的功能齐全的程序,
import java.util.Scanner;
import java.io.*;
public class Hello {
public static float[] numbers = {1,2,3,4,1,2,3,4};
public static void saveValuesToFile(Scanner keyboard) {
try {
System.out.println("Enter name of file: ");
String fileName = keyboard.next();
File file = new File(fileName);
PrintWriter outputFile = new PrintWriter(file);
for(int i = 0; i < numbers.length; i++) {
outputFile.println(numbers[i]);
}
outputFile.close();
} catch (FileNotFoundException e) {
System.out.println("file doesn't exist");
e.printStackTrace();
}
}
public static void readFromFile(Scanner keyboard) {
System.out.println("Enter file name");
String fileName = keyboard.next();
BufferedReader reader = null;
try {
reader = new BufferedReader (new FileReader(fileName));
String input = null;
int i = 0;
while ((input = reader.readLine()) != null) {
numbers[i] = Float.parseFloat(input);
i++;
}
for(int j = 0; j < numbers.length; j++) {
System.out.println(numbers[j]);
}
}
catch (NumberFormatException | IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
saveValuesToFile(scanner);
readFromFile(scanner);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.