我正在使用toString方法,但它没有给我我想要的格式?

时间:2017-04-06 00:33:21

标签: java

我希望我的方法返回一个矩形基(坐标)的高度和宽度。

一个例子

对于左下角位于(-3,2)的矩形 如果宽度为4,高度为5,则该方法应准确返回 “基地:( - 3,2)w:4小时:5”。对于此示例,位置5,12和16处有一个空格。

// left = x,bottom = y,width = w,height = h

这是我的方法

public String toString(){
    return String.format("%-5s%-12s%16d","base:" ,"(",this.left,",", this.bottom,")", "w:",this.width, "h:",this.height);
}

3 个答案:

答案 0 :(得分:1)

格式说明符的数量和参数的数量之间存在联合,它们的质量应该相等。

String.format("%-5s(%d, %d) w:%d h:%d","base:", left, bottom, width, height)之类的内容会根据您提供的值打印base:(-3, 2) w:4 h:5 ...

格式说明符基于C,有关详细信息,请查看these examples

答案 1 :(得分:1)

执行此功能的最简单方法是将要显示的所有文本放在String.format()的第一个参数中。

像这样:

public String toString(){
        return String.format("base:(%d,%d) w:%d h:%d", this.left, this.bottom, this.width, this.height);
}

答案 2 :(得分:0)

我不明白你为什么要将几个常量字符串插入到一个常量格式字符串中。你能确认那是你真正想要的吗?

另外,我计算了几个传递给String.format的参数,而不是格式说明符。首先解决这个问题。到那时,为什么你得到的输出与你想要的不匹配应该更清楚。