gpt4 book ai didi

java - 在 Java 中格式化字符串?

转载 作者:行者123 更新时间:2023-11-29 06:43:45 26 4
gpt4 key购买 nike

我正在编写一个应该模拟飞机 cargo 的类,但我在格式化该类的 toString() 方法时遇到了问题。以下代码:

public class Cargo 
{
private String label;
private int weight, height, width, length;

public String toString()
{
return String.format("%s%s\t\t%-7s%-2s%-5d%-11s%-2s%-3d%-2s%-3d%-2s%d",
getLabel(), ":", "Weight", "=", getWeight(), "Dimensions",
"=", getHeight(), "X", getWidth(), "X", getLength());
}

public static void main(String[] args)
{
Cargo cargo1 = new Cargo("Bill's Beans", 1200, 20, 15, 30);
Cargo cargo6 = new Cargo("Chicago Bulls", 1000, 10, 10, 10);
Cargo cargo7 = new Cargo("Lots of Meat", 3000, 20, 20, 20);
Cargo cargo8 = new Cargo("Tammy's Tomatoes", 600, 6, 6, 6);

System.out.println(cargo1.toString());
System.out.println(cargo6.toString());
System.out.println(cargo7.toString());
System.out.println(cargo8.toString());
}
}

产生这个输出:

Bill's Beans:       Weight = 1200 Dimensions = 20 X 15 X 30
Chicago Bulls: Weight = 1000 Dimensions = 10 X 10 X 10
Lots of Meat: Weight = 3000 Dimensions = 20 X 20 X 20
Tammy's Tomatoes: Weight = 600 Dimensions = 6 X 6 X 6

如您所见,除“Tammy's Tomatoes”外,一切都很好。我怎样才能解决这个问题?谢谢。

最佳答案

除了“Tammy's Tomatoes”之外,其他都对齐得很好,因为您使用的是制表符。在这种情况下,您的制表符长度为 4 个字符。 “Bill's Beans:”是 13 个字符,“Chicago Bulls:”是 14 个字符,“Lots of Meat:”是 13 个字符,“Tammy's Tomatoes:”是 17 个字符。

13/4 = 3
14/4 = 3
13/4 = 3
17/4 = 4

或者至少程序员是这么想的;)

因此,当您将另一个制表符放在最后一个制表符上时,它会在其余制表符后 4 个字符开始。

您可以根据公司名称的字符数调整选项卡的数量来解决此问题。

假设您希望尺寸从第 7 组 4 个空格开始。

首先,计算名称将占用的空间量。除以四(就像我上面所做的那样)。

用 7 减去数字。所以 Tammy's Tomatoes 将是 7-4=3。运行一个循环,将 3 个“\t”添加到结果(您要添加它们的位置)。

所以最后,您的代码将如下所示:

    String result = String.format("%s%s", getLabel(), ":");

int tabs = result.length()/4;
int desiredTabs = 7;
for(int i = 0; i < desiredTabs-tabs) {
result += "\t";
}
result += String.format("%-7s%-2s%-5d%-11s%-2s%-3d%-2s%-3d%-2s%d",
"Weight", "=", getWeight(), "Dimensions",
"=", getHeight(), "X", getWidth(), "X", getLength());
return result;

编辑以回答评论中的问题:

嗯,你真的不需要使用 String.format()。实际上,您可以只附加变量(例如,result + getWidth())。我刚刚使用了 String.format() 因为那是您使用的。您可以将其重写为:

    String result = String.format("%s%s", getLabel(), ":");

int tabs = result.length()/4;
int desiredTabs = 7;
for(int i = 0; i < desiredTabs-tabs) {
result += "\t";
}
result += "Weight = " + getWeight() + " Dimensions = " + getHeight() + " X " + getWidth() + " X " + getLength();

return result;

简单多了:)

关于java - 在 Java 中格式化字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8468321/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com