1317: 控制台表格
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 46 Solved: 15
[ Submit][ Status][ Web Board]
Description
画表格
在图形环境中很容易做出漂亮的表格。但在控制台环境中就比较困难了。有的时候可以用一些符号大略地模拟:(word文档中可能不整齐,拷贝到记事本中看)
+-------+------+
|abc |xyz=tt|
+-------+------+
|hellomm|t2 |
+-------+------+
本题目要求设计一个程序,把用户输入的内容用这种“准表格”的方式展现出来。
Input
用户输入的第一行是一个整数,表示接下来有多少行信息。接下来的每行由若干单元组成。单元间用逗号分开。
Output
程序输出:用表格方式重新展现的输入内容。
Sample Input
3
cat,dog,good-luck
1,2,5
do not use,,that
Sample Output
+----------+---+---------+
|cat |dog|good-luck|
+----------+---+---------+
|1 |2 |5 |
+----------+---+---------+
|do not use| |that |
+----------+---+---------+
import java.util.*;
public class 控制台表格 {
static String[][] s=new String[256][256];
static int[] a=new int[100];
static int[] maxl=new int[100];
static int n;
static int c=0;
//处理函数
public static void f() {
int j=0;
for(int i=0;i<s[0].length;i++) {
if(!s[0][i].equals(null))
c++;
}
while(j<c) {
for(int i=0;i<n;i++) {
if(s[i][j].length()>maxl[j]){
maxl[j]=s[i][j].length();
}
}
j++;
}
}
//输出函数
public static void print() {
border();
for(int i=0;i<n;i++) {
System.out.print('|');
for(int j=0;j<c;j++) {
System.out.print(s[i][j]);
if(s[i][j].length()<maxl[j]) {
for(int k=s[i][j].length();k<maxl[j];k++)
System.out.print(" ");
}
if(j==c-1)
System.out.println('|');
else
System.out.print('|');
}
border();
}
}
//边界输出函数
public static void border() {
System.out.print('+');
for(int i=0;i<c;i++) {
for(int k=0;k<maxl[i];k++) {
System.out.print('-');
}
if(i==c-1)
System.out.println('+');
else
System.out.print('+');
}
}
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
n=in.nextInt();
s[0]=in.nextLine().split(",");
for(int i=0;i<n;i++) {
s[i]=in.nextLine().split(",");
}
f();
print();
}
}