Java字符串新行,具有特定逻辑,不带字符串格式
以下代码:Java字符串新行,具有特定逻辑,不带字符串格式,java,Java,以下代码: String a = "100.00"; String b = "10.00"; String c= "5.00"; String value = a+ "\n"+ b +"\n" +c; System.out.println(value); 印刷品: 100.00 10.00 5.00 我需要的输出格式是小数点位置固定,无需使用任何字符串格式库(带逻辑): 变量值来自数据库,要求显示小数点位置与垂直方向相同的值。以下是使用流的示例;可能效率更高,但我玩得很开心 它假设所有的
String a = "100.00";
String b = "10.00";
String c= "5.00";
String value = a+ "\n"+ b +"\n" +c;
System.out.println(value);
印刷品:
100.00
10.00
5.00
我需要的输出格式是小数点位置固定,无需使用任何字符串格式库(带逻辑):
变量值来自数据库,要求显示小数点位置与垂直方向相同的值。以下是使用流的示例;可能效率更高,但我玩得很开心 它假设所有的数字都有2个小数,如您所示,仅供参考;但这是可以修改的
String a = "100.00";
String b = "10.00";
String c= "5.00";
List<String> strings = Arrays.asList(a, b, c);
final int maxLen = strings.stream().map(String::length).reduce(Math::max).get();
strings.forEach(s -> {
System.out.println(Stream.generate(() -> " ").limit(maxLen - s.length()).collect(Collectors.joining()) + s);
});
我还将3个示例放入一个列表中,这样它可以处理任意数量的元素
没有Java 8
String a = "100.00";
String b = "10.00";
String c = "5.00";
List<String> strings = Arrays.asList(a, b, c);
int maxLen = -1;
for (String s : strings) maxLen = Math.max(maxLen, s.length());
for (String s : strings) {
String spaces = "";
for (int i = 0; i < maxLen - s.length(); ++i) {
spaces += " ";
}
System.out.println(spaces += s);
}
String a=“100.00”;
字符串b=“10.00”;
字符串c=“5.00”;
列表字符串=数组.asList(a,b,c);
int maxLen=-1;
for(String s:strings)maxLen=Math.max(maxLen,s.length());
用于(字符串s:字符串){
字符串空格=”;
对于(int i=0;i
下面是一个使用流的示例;可能效率更高,但我玩得很开心
它假设所有的数字都有2个小数,如您所示,仅供参考;但这是可以修改的
String a = "100.00";
String b = "10.00";
String c= "5.00";
List<String> strings = Arrays.asList(a, b, c);
final int maxLen = strings.stream().map(String::length).reduce(Math::max).get();
strings.forEach(s -> {
System.out.println(Stream.generate(() -> " ").limit(maxLen - s.length()).collect(Collectors.joining()) + s);
});
我还将3个示例放入一个列表中,这样它可以处理任意数量的元素
没有Java 8
String a = "100.00";
String b = "10.00";
String c = "5.00";
List<String> strings = Arrays.asList(a, b, c);
int maxLen = -1;
for (String s : strings) maxLen = Math.max(maxLen, s.length());
for (String s : strings) {
String spaces = "";
for (int i = 0; i < maxLen - s.length(); ++i) {
spaces += " ";
}
System.out.println(spaces += s);
}
String a=“100.00”;
字符串b=“10.00”;
字符串c=“5.00”;
列表字符串=数组.asList(a,b,c);
int maxLen=-1;
for(String s:strings)maxLen=Math.max(maxLen,s.length());
用于(字符串s:字符串){
字符串空格=”;
对于(int i=0;i
我不知道“不使用任何字符串格式库”的具体含义,但是。。。现在我们进入一个关于“库”是什么意思的语义争论。您正在格式化字符串。如果我回答你关于面值的问题,你问的是一个不可能的问题:如何在不格式化字符串的情况下格式化字符串
我假设您的意思是:不添加第三方依赖项
在这种情况下,如果有双精度
(或大十进制
或浮点
)作为输入:
String.format("%6.2f", 100.00);
String.format("%6.2f", 10.00);
String.format("%6.2f", 5.00);
(6?是的;6!6是至少要打印的字符总数。您需要在分隔符前加3位,在分隔符后加2位,总共是6,因此是6。)
如果您有字符串作为输入,显然您要求对其进行右对齐?好吧,你可以这样做:
String.format("%6s", "100.00");
String.format("%6s", "10.00");
String.format("%6s", "5.00");
注意:为了方便起见,
System.out.printf(“%6s\n”、“100.0”)
是System.out.println(String.format(“%6s”,“100.0”))的缩写代码>我不知道“不使用任何字符串格式库”的具体含义,但是。。。现在我们进入一个关于“库”是什么意思的语义争论。您正在格式化字符串。如果我回答你关于面值的问题,你问的是一个不可能的问题:如何在不格式化字符串的情况下格式化字符串
我假设您的意思是:不添加第三方依赖项
在这种情况下,如果有双精度
(或大十进制
或浮点
)作为输入:
String.format("%6.2f", 100.00);
String.format("%6.2f", 10.00);
String.format("%6.2f", 5.00);
(6?是的;6!6是至少要打印的字符总数。您需要在分隔符前加3位,在分隔符后加2位,总共是6,因此是6。)
如果您有字符串作为输入,显然您要求对其进行右对齐?好吧,你可以这样做:
String.format("%6s", "100.00");
String.format("%6s", "10.00");
String.format("%6s", "5.00");
注意:为了方便起见,System.out.printf(“%6s\n”、“100.0”)
是System.out.println(String.format(“%6s”,“100.0”))的缩写
为什么没有字符串格式(假设您指的是格式
方法)?这是一条显而易见的道路,你需要一个非常有力的理由来解释为什么你不想使用它。事实上,我在ABAP中遇到了这个问题,在那里我不能使用这种格式。所以我在寻找逻辑。找到你要打印的最长字符串,然后在每个其他字符串前面加上缺失的空格。需要一个循环逻辑是1)找到最长的字符串2)为每个字符串计算此字符串长度与最长字符串长度之间的差异3)用此差异构造一个空格字符串并将其连接到字符串尝试以下操作:string value=a+“\n”+b+“\n”+c
:PWhy不带字符串格式(假设您指的是格式
方法)?这是一条显而易见的道路,你需要一个非常有力的理由来解释为什么你不想使用它。事实上,我在ABAP中遇到了这个问题,在那里我不能使用这种格式。所以我在寻找逻辑。找到你要打印的最长字符串,然后在每个其他字符串前面加上缺失的空格。需要一个循环逻辑是1)找到最长的字符串2)为每个字符串计算此字符串长度与最长字符串长度之间的差异3)用此差异构造一个空格字符串并将其连接到字符串尝试以下操作:string value=a+“\n”+b+“\n”+c代码>:p这是需要的。谢谢你。但是我们能在没有java8的情况下得到这段代码吗?当然,添加了一个替代解决方案。这就是我们所需要的。谢谢你。但是我们能在没有java8的情况下得到这段代码吗?当然,添加了一个替代解决方案。