在Java中格式化输出

3
我希望格式化数字以便以正确的格式显示。目前,除了1之外,1-12的左侧都显示正确,因为由于将8推入格式中,1已移动到另一个空间。以下是错误的结果... (-)在此处充当空格,因为我无法附加图像。
--1 * 8 = -8
-2 * 8 = 16
-3 * 8 = 24
-4 * 8 = 32
-5 * 8 = 40
-6 * 8 = 48
-7 * 8 = 56
-8 * 8 = 64
-9 * 8 = 72
10 * 8 = 80
11 * 8 = 88
12 * 8 = 96

我想要的结果如下所示... 这里的 (-) 代表空格,因为我无法附加图片。
--1 * 8 = --8
--2 * 8 = 16
--3 * 8 = 24
--4 * 8 = 32
--5 * 8 = 40
--6 * 8 = 48
--7 * 8 = 56
--8 * 8 = 64
--9 * 8 = 72
10 * 8 = 80
11 * 8 = 88
12 * 8 = 96

我很感谢您能帮助我解决这个问题,这个问题让我很烦恼。
以下是我的代码:
```html

这是我的代码:

```
(注:此处为原文内容,无需翻译)
  public class Main {

        public static void main(String [] args) {

            int end_value = 13;
            int result = 0;

            System.out.print("Enter a Number:");
            int num_input = BIO.getInt();

            for (int numberLoop = 1; numberLoop < end_value; numberLoop++) 
            {
                result = numberLoop * num_input;

                System.out.printf("%11s\n", numberLoop + " * " + num_input + 
                                                          " = " + result);
            }
        }
    }

首先,您应该使用Logger而不是System.out.prinln()。System.out是一种不好的做法 :) 看看与日志记录相关的PMD违规行为: http://pmd.sourceforge.net/snapshot/rules/logging-java.html - pidabrow
1个回答

4
您应该对各个元素应用格式: -
System.out.format("%3d * %4d = %5d\n", numberLoop, num_input, result);

当你打印整数时,应该使用%d

%3d将被替换为numberLoop

%4d将被替换为num_input

%5d将被替换为result

然后你会得到如下输出:-

numberLoop(3 spaces) * num_input(4 spaces) = result(5 spaces)

%3d 表示右对齐,%-3d 表示左对齐。您可以选择任何一种。

您还可以通过使用 String.format() 将格式化后的字符串存储到一个字符串变量中,并且稍后可以打印该字符串变量:-

String result = String.format("%3d * %4d = %5d\n", numberLoop, num_input, result)
注意:如需更多格式选项,请查阅Formatter类的文档。

谢谢Rohit Jain!现在可以放心啦 :) - user1726910

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接