如何打印数组表格?
我在这里看看是否有人能够帮助解决这个问题。如何打印数组表格?
我想打印表出来这将是这个样子
Month #1 Month #2
Person 1 $1293 $128
Person 2 $122 $1233
我已经做了获取编号的所有其他步骤,等我只是停留在我的最后一步以表格形式获取正确的输出。
int[][] table = new int[people][month];
// Load the table with values
for (int i=0; i < table.length; i++){
for (int j=0; j < table[i].length; j++){
table[i][j] = r.nextInt(20000-1000) + 1000;
}
}
// Print the table
System.out.println("\n\nSummer Internship Salary Information:");
for (int i=0; i < table.length; i++) {
for (int j=0; j < table[i].length; j++)
System.out.print ("Person #" + (i+1) + "$" + table[i][j] + "\t");
System.out.println();
}
该数组的初始大小由用户决定。和第一部分加载表的值。这可以忽略。
im有实际麻烦的部分是从表格打印出来。从我现在有代码,它给人的
person#1 $12312 person #1 $12312
person#2 $12312 person #2 $12312
的输出(注意数字是不正确的号码,它只是一个例子)
我怎样才能使之具有输出看起来像:
Month#1 Month#2
Person#1 $12312 $12312
Person#2 $12312 $12312
而且我不允许在本练习中使用调用方法或JCF。
假设所有的人都有同样的月数:
System.out.println("\n\nSummer Internship Salary Information:");
for (int j=0; j < table[0].length; j++) {
System.out.print("\tMonth #" + (j+1));
}
for (int i=0; i < table.length; i++) {
System.out.print("\nPerson #" + (i+1));
for (int j=0; j < table[i].length; j++) {
System.out.print("\t$" + table[i][j]);
}
}
System.out.println();
注意人身#取出内循环,而列标题首先打印。
还要注意,如果任何数字太宽(比tabstop更宽),它会打破布局。你必须要聪明,以解决这个问题(首先找到最大宽度为每列或截断值)
(编辑就摆在更好的地方制表符和换行符;更少的字符串,并没有尾随选项卡)
OH!我现在明白了。非常感谢。 – 2013-03-04 03:09:30
没问题。如果这回答您的问题,您应该将其标记为答案,以便将其从“未答复”选项卡中移除。不要说谎;它也让我分! – Dave 2013-03-04 03:14:40
由于列的变量性质,我会计算每列的“所需宽度”。这将被用于“垫”短列,以确保列排队......
这将允许增加的人数,有工资,而无需任何额外补偿的大小...
public class SalaryColumns {
public static void main(String[] args) {
int people = 20;
int month = 12;
String monthLabel = "Month #";
String personLabel = "Person #";
Random r = new Random(System.currentTimeMillis());
int[][] table = new int[people][month];
int[] columWidths = new int[month + 1];
columWidths[0] = personLabel.length() + Integer.toString(people).length() + 1;
// Load the table with values
for (int i = 0; i < table.length; i++) {
for (int j = 0; j < table[i].length; j++) {
table[i][j] = r.nextInt(20000 - 1000) + 1000;
columWidths[j + 1] = Math.max(
columWidths[j + 1],
Math.max(
monthLabel.length() + Integer.toString(month).length() + 1,
Integer.toString(table[i][j]).length() + 2));
}
}
// Print the table
System.out.println("\n\nSummer Internship Salary Information:");
System.out.print(pad("", columWidths[0]));
for (int i = 0; i < month; i++) {
String value = monthLabel + String.format("%d", i);
value += pad(value, columWidths[i + 1]);
System.out.print(value);
}
System.out.println();
for (int i = 0; i < table.length; i++) {
String value = personLabel + String.format("%d", i);
value += pad(value, columWidths[0]);
System.out.print(value);
for (int j = 0; j < table[i].length; j++) {
value = String.format("$%d", table[i][j]);
value += pad(value, columWidths[j + 1]);
System.out.print(value);
}
System.out.println();
}
}
public static String pad(String value, int length) {
StringBuilder sb = new StringBuilder(length);
while ((value.length() + sb.length()) < length) {
sb.append(" ");
}
return sb.toString();
}
}
,其输出类似...
Month #0 Month #1 Month #2 Month #3 Month #4 Month #5 Month #6 Month #7 Month #8 Month #9 Month #10 Month #11
Person #0 $19428 $6333 $19057 $9502 $3265 $3731 $13855 $10254 $2997 $11370 $3264 $13038
Person #1 $11988 $2313 $7722 $13457 $1100 $10589 $5453 $5996 $12301 $11490 $12283 $4407
Person #2 $15179 $13993 $19421 $12370 $12090 $18623 $13716 $13215 $7308 $8446 $6657 $7861
Person #3 $19673 $2956 $10505 $11141 $2020 $1025 $6833 $8821 $4366 $4127 $8938 $16353
Person #4 $17210 $9442 $7960 $3178 $19924 $17406 $9637 $11655 $13862 $9136 $17205 $10832
Person #5 $1609 $16141 $17245 $5073 $5716 $17390 $11861 $10235 $12540 $6037 $5199 $1782
Person #6 $10721 $2257 $16660 $6635 $17384 $9606 $17578 $16799 $4066 $1960 $9563 $4705
Person #7 $13224 $17277 $5932 $8532 $17321 $12650 $9672 $12527 $2251 $2702 $9033 $10322
Person #8 $11625 $14107 $1171 $19300 $18455 $13178 $15637 $19687 $12751 $8870 $9412 $6501
Person #9 $18550 $17017 $6902 $16676 $1057 $12067 $17656 $9220 $15494 $18450 $17341 $10378
Person #10 $18408 $1907 $1203 $17781 $17106 $4861 $19259 $16245 $12223 $16278 $4429 $18283
Person #11 $17548 $6160 $18262 $9116 $15075 $16619 $19431 $3463 $15789 $17814 $2059 $16414
Person #12 $3882 $14816 $6580 $14257 $2192 $11033 $1387 $12269 $14246 $18406 $14794 $9036
Person #13 $14124 $10216 $11960 $7462 $18001 $6254 $12928 $18118 $14161 $10585 $8102 $7295
Person #14 $9849 $4085 $7184 $16173 $6847 $10288 $1796 $17384 $11323 $10811 $2636 $9946
Person #15 $13500 $15157 $7618 $1810 $9368 $3295 $12586 $17489 $16092 $10978 $15227 $5506
Person #16 $19668 $8540 $16249 $1039 $13672 $14082 $8978 $2710 $17092 $11280 $8090 $10266
Person #17 $18138 $7467 $18246 $7110 $16501 $6583 $14026 $14204 $10877 $18628 $14575 $4836
Person #18 $15090 $1579 $15613 $8480 $15854 $15687 $10024 $17004 $15452 $16351 $13714 $19755
Person #19 $11015 $1152 $11733 $7620 $18217 $8518 $7243 $11819 $10313 $4339 $13532 $13700
只是一个小提示:在未来,指定编程语言中的问题的标签之一。这个问题中没有什么特别提到Java,所以认识Java的人可能会简单地跳过它。 – Anorov 2013-03-04 02:50:48
哦,好的!谢谢 ! – 2013-03-04 02:53:27