我正在尝试使用printf()
函数将零添加到用户输入的数字中。但是,我不确定语法用法。以下是我到目前为止的情况:
public class Solution {
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
final int requiredNumLength = 3;
// readign untill EOF
while (reader.hasNext()){
// getting the word form the input as a string
String word = reader.next();
// getting the number from the input as an integer
int num = reader.nextInt();
int length = String.valueOf(num).length();
if (length < requiredNumLength){
int zerosRequired = requiredNumLength - length;
//System.out.println("required zeros: " + zerosRequired);
}
// print out the columns using the word and num variables
System.out.printf("%-10s %-10s%n" , word, num);
}
}
}
以下是一个使用它的例子:
input : java 023
output: java 023
(工作正常)
现在我的问题是,在一个数字小于3个字符的情况下,我希望能够在前面添加零,使其长度为3.此外,这就是我正在努力做的事情。 if
语句,用于查找数字需要多少个零。我想在printf()
函数中使用这样的东西:("%0zerosRequiredd", num);
但是,我不知道如何将它与我已有的一起使用:System.out.printf("%-10s %-10s%n" , word, num)
。有什么建议吗?
答案 0 :(得分:3)
您可以这样做:
String formatted = String.format("%03d", num);
这会导致很多零。
对于您的示例,您可以使用:
System.out.printf("%-10s %03d" , word, Integer.parseInt(num));
如果num是float,请使用Float.parseFloat(num)
,或者更好地将其声明为正确的类型。
见下文:
public static void main(String[] args){
String word = "Word";
int num = 5;
System.out.printf("%-10s %03d\n" , word, num);
num = 55;
System.out.printf("%-10s %03d\n" , word, num);
num = 555;
System.out.printf("%-10s %03d\n" , word, num);
num = 5555;
System.out.printf("%-10s %03d\n" , word, num);
num = 55555;
System.out.printf("%-10s %03d\n" , word, num);
}
这是输出:
mike@switters:~/code/scratch$ javac Pf.java && java Pf
Word 005
Word 055
Word 555
Word 5555
Word 55555