您的位置:首页 > 其它

格子中输出

2017-03-30 11:42 155 查看

题目描述:

stringInGrid方法会在一个指定大小的格子中打印指定的字符串。

要求字符串在水平、垂直两个方向上都居中。

如果字符串太长,就截断。

如果不能恰好居中,可以稍稍偏左或者偏上一点。

下面的程序实现这个逻辑,请填写划线部分缺少的代码。

public static void stringInGrid(int width, int height, String s)
{
if(s.length()>width-2) s = s.substring(0,width-2);
System.out.print("+");
for(int i=0;i<width-2;i++) System.out.print("-");
System.out.println("+");

for(int k=1; k<(height-1)/2;k++){
System.out.print("|");
for(int i=0;i<width-2;i++) System.out.print(" ");
System.out.println("|");
}

System.out.print("|");

String ff = _______________________________________________________;  //填空
System.out.print(String.format(ff,"",s,""));

System.out.println("|");

for(int k=(height-1)/2+1; k<height-1; k++){
System.out.print("|");
for(int i=0;i<width-2;i++) System.out.print(" ");
System.out.println("|");
}

System.out.print("+");
for(int i=0;i<width-2;i++) System.out.print("-");
System.out.println("+");
}


对于题目中数据,应该输出:

+——————+

| |

| abcd1234 |

| |

| |

+——————+

(如果出现对齐问题,参看【图1.jpg】)



思路:

代码填空题,看到填空处后面的
String.format(ff,"",s,"")
就应该知道这是需要你格式化字符串

答案:
(width-s.length()-2)==0?s:"%"+((width-s.length()-2)/2)+"s%s%"+((width-s.length()-1)/2)+"s"

//格子中输出
public class Main{

public static void main(String[] args) {
// TODO Auto-generated method stub
stringinGrid(10, 10, "aaaaa111111");
}

// 对format的熟悉
// 格式化字符串%2s 增加两个空格
public static void stringinGrid(int width, int height, String s) {
if (s.length() > width - 2)
s = s.substring(0, width - 2);
System.out.print("+");
for (int i = 0; i < width - 2; i++)
System.out.print("-");
System.out.println("+");

for (int k = 1; k < (height - 1) / 2; k++) {
System.out.print("|");
for (int i = 0; i < width - 2; i++)
System.out.print(" ");
System.out.println("|");
}

System.out.print("|");
//填空区域
String ff=(width-s.length()-2)==0?s:"%"+((width-s.length()-2)/2)+"s%s%"+((width-s.length()-1)/2)+"s";
//String ff = "%" + (width - 2 - s.length()) / 2 + "s%s%"+ (width - 2 - s.length() - (width - 2 - s.length()) / 2) + "s";

System.out.print(String.format(ff, "", s, ""));
System.out.println("|");

for (int k = (height - 1) / 2 + 1; k < height - 1; k++) {
System.out.print("|");
for (int i = 0; i < width - 2; i++)
System.out.print(" ");
System.out.println("|");
}

System.out.print("+");
for (int i = 0; i < width - 2; i++)
System.out.print("-");
System.out.println("+");

}

}


以上个人拙见,还请诸位斧正
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: