我无法确定如何逐行读取文件,然后对其进行格式化。最大的问题是我有一个带有"数字的文本文件"分配给一个" person"。第一个数字是" 001"。当我尝试阅读它时,它只保存为" 1"。对我的数字中的所有前导零都做同样的事情。 " 002"成为" 2"," 030"成为" 30"等等。每个数字都有三位数字,我希望保持这种状态。
以下是我从文件中读取的代码:
do {
next = Breader.readLine();
sNumber = Integer.parseInt(next);
nameArray.add(sNumber);
sName = Breader.readLine();
nameArray.add(sName);
end = Breader.ready();
} while(end);
它必须是Integer.parseInt();
函数中的内容。
import java.io.*;
import java.util.Scanner;
import java.util.ArrayList;
public class FinalProgram {
public static void main(String[] args) IOException {
nameReader();
}
private static void nameReader() throws IOException {
String nameFile = " ";
String next = " ";
int sNumber = 0;
String sName = " ";
Scanner input = new Scanner(System.in);
ArrayList nameArray = new ArrayList();
try {
System.out.print("Enter the Name file(c:filename.txt): ");
nameFile = input.nextLine();
} catch(IllegalArgumentException e) {
System.out.printf("Invalid input. Please enter"
+ " filename in the form of "
+ "c:filename.txt\n", e.getMessage());
}
//Instantiate FileReader and BufferedReader
FileReader freader = new FileReader(nameFile);
BufferedReader Breader = new BufferedReader(freader);
boolean end = Breader.ready();
do {
next = Breader.readLine();
sNumber = Integer.parseInt(next);
nameArray.add(sNumber);
sName = Breader.readLine();
nameArray.add(sName);
end = Breader.ready();
} while(end);
System.out.print(nameArray);
}
}
答案 0 :(得分:1)
每个数字都有三位数字,我希望保持这种状态。
然后你需要把它读成一个String变量。
或者如果您需要将其转换为int值进行处理,那么当您显示该值时,首先需要使用volatile
来格式化输出String。
例如:
NumberFormat
答案 1 :(得分:1)
如果将字符串解析为int sNumber = Integer.parseInt(next);
中的整数,则前导零将被忽略,因为整数没有前导零,所以它是多余的。为什么要存储零,你会在一张纸上写030
而不是30
吗?应该存储多少个零,一个,两个,十个?您如何比较0030
,030
和30
,它们是否相同?
正如您所看到的,您的意思是如何格式化作为字符串,整数永远不会存储为前导零。您可以使用String.format(...);
:
int yourInteger = 30;
String formattedNumber = String.format("%03d", yourInteger);
// Prints 30 as 030
System.out.println(formattedNumber);
格式字符串"%03d"
表示:打印一个整数,打印至少三位数,如果少于三位,则用前导零填充它们。因此,30
打印为030
,5
打印为005
,3000
打印为3000
,因为数字超过三位。
另一种格式化数字的更高级方法是NumberFormat
。