Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有没有一种方法可以格式化您的输出,使输出更加一致?_Java_Println - Fatal编程技术网

Java 有没有一种方法可以格式化您的输出,使输出更加一致?

Java 有没有一种方法可以格式化您的输出,使输出更加一致?,java,println,Java,Println,我有一个很长的字符串,所有的东西都是对的,但是我不能得到和教授相同的输出。他有一个更统一的输出。所以首先我试着做一个system.out.println(),但没有成功 这是我的代码: System.out.println("Password = " + password + "\t\t" + "Newline = " + ctnline + "\t" + "Single = " + ctlength + "\t" + "Equal = " + ctequal + "\t" + "Lenght

我有一个很长的字符串,所有的东西都是对的,但是我不能得到和教授相同的输出。他有一个更统一的输出。所以首先我试着做一个system.out.println(),但没有成功

这是我的代码:

System.out.println("Password = " + password + "\t\t" + "Newline = " + ctnline + "\t" + "Single = " + ctlength + "\t" + "Equal = " + ctequal + "\t" + "Lenght = " + ctlength2 + "\t" + "Upper = " + ctupper + "\t" + "Lower = " + ctlower + "\t" + "Special = " + (ctspec2));
这就是输出:

Password = bank,Rabbither               Newline = 0     Single = 2      Equal = 0       Lenght = 1      Upper = 2       Lower = 0       Special = 1
Password = acrossShemoment,             Newline = 0     Single = 3      Equal = 0       Lenght = 2      Upper = 9       Lower = 0       Special = 0
Password = her.theyOWN          Newline = 0     Single = 6      Equal = 0       Lenght = 3      Upper = 9       Lower = 0       Special = 1
Password = ALICEeyes.said               Newline = 0     Single = 0      Equal = 0       Lenght = 0      Upper = 0       Lower = 0       Special = 0
Password = thepackKing.         Newline = 0     Single = 1      Equal = 0       Lenght = 3      Upper = 4       Lower = 0       Special = 1
Password = thethatKing.         Newline = 0     Single = 1      Equal = 0       Lenght = 0      Upper = 2       Lower = 0       Special = 0
Password = AfterWhichdear!              Newline = 0     Single = 1      Equal = 0       Lenght = 1      Upper = 3       Lower = 0       Special = 0
Password = "Silencethecrown             Newline = 0     Single = 1      Equal = 1       Lenght = 6      Upper = 8       Lower = 0       Special = 0
Password = "Silencemuchme               Newline = 0     Single = 6      Equal = 0       Lenght = 1      Upper = 6       Lower = 0       Special = 2
Password = King.nopeeped                Newline = 0     Single = 5      Equal = 0       Lenght = 2      Upper = 9       Lower = 0       Special = 2
Password = eitherKing.Soon              Newline = 0     Single = 0      Equal = 0       Lenght = 0      Upper = 0       Lower = 0       Special = 0 
这不起作用,教师有一个输出,其中“换行符”对齐在一起

我需要这样的输出(老师是如何得到的):


我从来没有学会如何使用printf,当我查找解决方案时,他们就是这样在网上展示它的。是否有其他方法可以在打印时正确格式化。我不确定我们是否可以使用printf,因为老师从未教过它


编辑:我可以使用String.format()方法

您可以使用System.out.printf()。它与String.format()使用相同的代码

格式字符串采用您喜欢的任何文本加上以%s开头的代码。最常用的两个是%s(字符串)和%d(十进制数)。您可以在谷歌上搜索printf格式字符串以进行更长时间的讨论。不太常见但仍然重要的是%f。我将在下面讨论这个问题

%s或%d可以采用可选长度。您将看到我使用了%20s,这意味着即使传入的字符串为空,也要将空间填充到20个字符。你可以用数字做同样的事情。如果不指定长度,它将使用所需的长度。如果您没有指定足够的,它将运行很长时间

您可以将填充数字设置为零,如%03d。例如,这将为您提供004而不是4

您可以使用-.%操纵左对齐和右对齐-比如20多岁

在这一点上,我将进行实验

对于浮点数(1.5),您需要%f

System.out.printf("%3.1f\n", 1.5);

在本例中,3是整个宽度,1是小数点后的位置。因此%10.2f将为您提供10个字符宽和小数点后2个点。

您可以使用
String.format
统一输出。使用
String.format
可以将文本输出长度定义为一种格式

例如,

String firstValue = "Password = bank,Rabbither";
String secondValue = "Newline = 0";
String thirdValue = "Single = 2";
String str = String.format("%1$-20s | %2$-30s | %3$-30s",fristValue, secondValue, thirdValue);

对于
1$-20s
1$
表示第一个变量,
-20s
表示字符串的固定长度。

“我不确定我们是否可以使用printf,因为老师从未教过它。”-那么,我们回答没有用。你应该询问你的老师允许你使用哪些方法,然后研究如何使用它们。也许,你的老师正在使用提供给你的解决方案之一。你可以使用建议的解决方案“是否有其他格式化方法”-是的,基本的方法是添加足够的空格,以便一列中的值都具有相同的长度。(例如,虽然密码长度小于20,但请在其中添加一个空格)非常感谢,这很有效。最后,我用它作为我的格式:``System.out.printf(“密码=%-22s换行=%-5d单条=%-5d等长=%-5d长度=%-5d上限=%-5d下限=%-5d特殊=%-5d\n”、密码、ctnline、ctlength、ctequal、ctlength2、ctupper、ctlower、ctspec2)```
System.out.printf("%3.1f\n", 1.5);
String firstValue = "Password = bank,Rabbither";
String secondValue = "Newline = 0";
String thirdValue = "Single = 2";
String str = String.format("%1$-20s | %2$-30s | %3$-30s",fristValue, secondValue, thirdValue);