我正在为我的java类开发基于文本的电子表格项目。我有实际的电子表格打印出来,我有一个阵列形式的单元格输入。问题是让单元格输入显示在电子表格中。
电子表格通过循环打印,看起来类似于:
| A | B | C | D | E | F | G |
--|---|---|---|---|---|---|---|
1| | | | | | | |
--|---|---|---|---|---|---|---|
2| | | | | | | |
--|---|---|---|---|---|---|---|
3| | | | | | | |
--|---|---|---|---|---|---|---|
4| | | | | | | |
--|---|---|---|---|---|---|---|
5| | | | | | | |
--|---|---|---|---|---|---|---|
关于如何从数组中获取输入以在电子表格中打印的任何想法?我真的不是在寻找解决问题的方法,只是朝着正确的方向努力。任何帮助将不胜感激。
电子表格是通过System.out.print();
P.S。我会发布电子表格的屏幕上限,但我的帐户是低级别的。对不起,质量很差。
编辑:我无法发布确切的代码来立即打印电子表格(保存在另一台计算机上),但我可以提供说明。基本上我是在for循环中打印电子表格网格的每一行。字母是一个char变量,在循环中发生变化。数字也是如此,除了它们是int变量。整个事情就是在控制台中打印出字符。
编辑:以下是打印电子表格的代码:
for (char x = 'A' ; x <= 'G' ; x++) {
System.out.print(" " + x + " |");
}
System.out.println("");
System.out.print("---+--------------+" + "--------------+" + "--------------+" + "--------------+" + "--------------+" + "--------------+" + "--------------+");
System.out.println("");
if (i == 0) {
// 10-99 digit loop
for (int j = 1 ; j <= length ; j++) {
if (j >= 10) {
System.out.print("" + j + " | | | | | | | |");
System.out.println("");
System.out.print("---+--------------+" + "--------------+" + "--------------+" + "--------------+" + "--------------+" + "--------------+" + "--------------+");
System.out.println("");
}
else {
// 1-9 digit loop
System.out.print(" " + j + " | | | | | | | |");
System.out.println("");
System.out.print("---+--------------+" + "--------------+" + "--------------+" + "--------------+" + "--------------+" + "--------------+" + "--------------+");
System.out.println("");
}
}
}
它还没有很好地优化(一旦我完成所有工作,我将处理它)但它确实打印电子表格。
答案 0 :(得分:0)
你没有发表完整的例子,所以我不得不做出一些假设。
我假设您所讨论的数组是2D数组。因此,单元格A1引用数组中的[0][0]
。
为了使列的宽度正确,您需要扫描数组并确定最大的字符串(因为我假设您的数组包含字符串)。这是列的宽度。如果你没有想到这一点,你就会得到一堆格式化。
也许更好的选择是使用制表符而不是完全使用这些行?
无论如何,这意味着打印出来的-
的数量将是动态的。您应该使用实用程序方法。接受列名称的东西,循环遍历数组的该列中的所有元素(确定列的宽度),最后返回那么多-
s(作为字符串)。请注意,必须考虑表格中的任何间距。
现在桌子的轮廓尺寸正确,我们可以遍历2D阵列,打印出|
和元素。
这是一个非常基本的示例,它不计算列的大小:
String [][] tableData = { {"abc", "def"}, {"ghi", "jkl"} };
// The header
System.out.println("+-----+-----+-----+");
System.out.println("| | A | B |");
System.out.println("+-----+-----+-----+");
int rowNumber = 1;
// The body
for(String[] row : tableData)
{
// Numbers
System.out.print("| " + rowNumber + " ");
// Elements
for(String element : row)
{
System.out.print("| " + element + " ");
}
// New line for the end of the row
System.out.println("|");
rowNumber++;
}
// Footer
System.out.println("+-----+-----+-----+");
在这种情况下,我们不必计算我们需要多少间距和-
因为我们已经知道数据的大小(正好是3个字符宽)。打印出来:
+-----+-----+-----+
| | A | B |
+-----+-----+-----+
| 1 | abc | def |
| 2 | ghi | jkl |
+-----+-----+-----+
答案 1 :(得分:-1)
您需要将列字母转换为整数索引,以便将其用作二维数组的索引。可能还需要从行索引中减去1,以使另一个索引进入二维数组。