蓝桥杯-格子中输出-java

/* (程序头部注释开始)

* 程序的版权和版本声明部分

* Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 

* All rights reserved.

* 文件名称: 蓝桥杯赛题                           

* 作    者:   彭俊豪               

* 完成日期:   2016   年 04月 01日

* 版 本 号:      001   

* 对任务及求解方法的描述部分

* 问题描述:

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      |
|                           |
|                           |
+------------------+

* 程序头部的注释结束

*/

上代码:

public class Main {

  public static void main(String[] args) {
    stringInGrid(20, 6, "abcd1234");

  }

  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 = "%1$"+(width-s.length()-2)/2+"s%2$s%3$"+(width-s.length()-2)/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("+");
    }

}

posted @ 2017-04-06 16:16  成长中的小牛  阅读(884)  评论(0编辑  收藏  举报