标签:oid 显示 exce row 大小 其他 结束 integer 开始
在格子中显示
用户输入一个字符串,把它显示在格子中。
要求:
水平左对齐,垂直顶端对齐。
格子的宽度和高度是先定好的,比如:30 x 7
如果字符串太长,则需要折行显示。
如果实在太长,到最后一行都装不下,则截断它,使之不破坏格子边框。
可能的情景:
情景1
情景2
我们可以定义一个大的字符型数组 char[][] cc,该数组的范围就是表格的大小。
先把数组的四个角赋值为 ‘+‘,第一行最后一行的其他位置赋值为 ‘-‘,第一列和最后一列赋值为 ‘|‘.这样,表格的框架就打好了。
表格打好后,只需要把输入的串,拆分成字符装入上面定义的数组中即可。
例如:开一个10行6列的数组,把串"1234567890"输入到表格中,在数组中存在的示意图如下:
实现该过程的程序如下:
//2017.03.17 by 迷糊狐狸
import java.util.Scanner;
public class MyTest {
static Scanner scan = new Scanner(System.in);
//开一个与所需表格等容量的数组
//先把表格框架打好
//然后把字符串输入进去
static void block(int w, int h, String s){
char[][] cc = new char[h][w];
cc[0][0] = ‘+‘;
cc[h-1][0] = ‘+‘;
cc[0][w-1] = ‘+‘;
cc[h-1][w-1] = ‘+‘;
for(int i=0; i<h-2; i++){
cc[i+1][0] = ‘|‘;
cc[i+1][w-1] = ‘|‘;
}
for(int i=0; i<w-2; i++){
cc[0][i+1] = ‘-‘;
cc[h-1][i+1] = ‘-‘;
}
str_put_block(cc, s);
show(cc);
}
//把字符串拆分成字符,加入到数组中
//从数组中第一个元素不为零的位置开始加起,
//避开元素已经不为零的位置
//这里是从数组的第二行第二列开始,
//避开第一行最后一行第一列最后一列的所有位置
//直到全部加进去结束
static void str_put_block(char[][] cc, String s){
for(int i=1; i<cc.length-1; i++){
for(int j=1; j<cc[i].length-1; j++){
if(s.length()==0) break;
cc[i][j] = s.charAt(0);
s = s.substring(1);
}
}
}
//当数组中的元素为零时,输出空格
//不为零时输出该元素
static void show(char[][] cc){
for(int i=0; i<cc.length; i++){
for(int j=0; j<cc[i].length; j++){
System.out.print(cc[i][j]==0? ‘ ‘ : cc[i][j]);
}
System.out.println();
}
}
//请用户自己定义表格的容量(尽可能大一点)
//注意:请用户不要输入超过表格容量的字符串
//如果超过,超出部分不显示
public static void main(String[] args) {
while(true){
try{
System.out.println("请输入所需表格宽度width:");
int w = Integer.parseInt(scan.nextLine().trim());
if(w<3) throw new Exception();
System.out.println("请输入所需表格高度hight(尽可能大一点):");
int h = Integer.parseInt(scan.nextLine().trim());
if(h<3) throw new Exception();
System.out.println("请输入字符串s(请注意不要超过表格所能承载的长度):");
String s = scan.nextLine().trim();
if(s.length()>(w-2)*(h-2)) throw new Exception();
block(w, h, s);
break;
}catch(Exception e){
System.out.println("输入有误!");
}
}
运行结果如下:
正确输入结果示范如下:
错位输入示范结果如下:
标签:oid 显示 exce row 大小 其他 结束 integer 开始
原文地址:http://www.cnblogs.com/liyuanba/p/2017-03-17.html