[英]Java: Keeping leading zeros while reading and formatting a text file
我在弄清楚如何逐行讀取文件然后對其進行格式化時遇到麻煩。 最大的問題是我有一個文本文件,其中的“數字”分配給“人”。 第一個數字是“ 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);
}
}
每個數字都有三位數,我想保持這種方式。
然后,您需要將其讀入String變量。
或者,如果需要將其轉換為int值進行處理,則在顯示該值時,首先需要使用NumberFormat
來格式化輸出String。
例如:
NumberFormat nf = NumberFormat.getIntegerInstance();
nf.setMinimumIntegerDigits(3);
int value = 1;
System.out.println( nf.format(value) );
如果將字符串解析為整數,例如in 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
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.