【问题标题】:Using printf to add zeros to an integer value使用 printf 将零添加到整数值
【发布时间】:2015-10-21 05:32:02
【问题描述】:

我正在尝试使用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)。有什么建议吗?

【问题讨论】:

  • 对于数字说12345,您希望它如何显示?对于号码5,您希望它如何显示?
  • @TimBiegeleisen 对不起,我想我忘了提到用户只输入

标签: java printf append


【解决方案1】:

你可以这样做:

String formatted = String.format("%03d", num);

这将导致有多少个零。

对于您的示例,您可以使用:

System.out.printf("%-10s %03d" , word, Integer.parseInt(num));

如果 num 是浮点数,请使用 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

【讨论】:

  • 我想知道你从哪里得到这个代码:stackoverflow.com/questions/275711/…
  • 如何将其添加到:System.out.printf("%-10s %-10s%n" , word, num)?我不确定在哪里添加它。还是必须是单独的行?另外,如果我这样做,运行时如何知道要添加多少个零?我假设 "%03d" 将添加 3 个零。但是,可能只需要 1 或 2 个零就可以使数字长为 3 位。
  • 这将在 OP 的范围内起作用,即数字 num 将始终小于 1000。
  • 使用 System.out.printf("%-10s %03d" , word, Integer.parseInt(num)); 时出现编译时错误.我得到错误:没有找到适合传递(int)的方法 - 它适用于同一行。有什么想法吗?
  • @Alfredo - 例如查看我的编辑,如果您遇到错误,请发布您的代码。
猜你喜欢
  • 2018-03-14
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
  • 2017-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多