格子中输出
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("+"); } }
以上个人拙见,还请诸位斧正
相关文章推荐
- 第六届蓝桥杯A组C/C++ 第四题 格子中输出
- 2016届蓝桥杯省赛A组格子输出(printf(“”%*s“”)的应用)
- 蓝桥杯 格子中输出
- 蓝桥杯 格子中输出
- 第六届蓝桥杯C++B组第四题:格子中输出
- 蓝桥杯第六届 格子中输出(printf()的*修饰符)
- 蓝桥 格子中输出
- 1004-格子中输出
- 蓝桥杯 格子中输出
- 格子中输出
- 格子中输出
- 2015年蓝桥杯C组C/C++题目:格子中输出
- 蓝桥杯—格子中输出—详解
- 格子中输出(改进版,可改变输出行数,列数)
- 山东省第六届蓝桥杯 ///标题:格子中输出//c/c++组
- 第六届 蓝桥杯 c/c++ B组 省赛 (4)——格子中输出
- 4、格子中输出
- 第六届蓝桥杯【省赛试题4】格子中输出
- 格子中输出
- 蓝桥杯-格子输出