gpt4 book ai didi

java - 将数据放入二维数组并将其打印到预定义的位置

转载 作者:太空宇宙 更新时间:2023-11-04 13:05:17 26 4
gpt4 key购买 nike

我真的不知道如何将数据(基于行和列的单元格+单元格中放入的值)放入二维数组中(所以我放入数组中的内容是错误的,如您所见),然后在正确的位置显示该数据。写入3个数据示例。我用 for 循环创建了表。我仍在寻找解决方案,所以如果我找到它,我也会在这里说出来。谢谢。

编辑,我按照你的建议重新创建了表格,我不能只创建一个方法 put(int row, int col, double value) 的原因是因为我想使用一个字符串单元格,它结合了 2。如果我想在单元格中放入一个值,程序需要识别 sh.put("11",1) 需要将值 1 放入单元格 11 中,因此第 1 行第 1 列。

public class SpreadSheet{
String[][] sheet; // Data + formules sheet
String[][] values; // copy sheet
private int data;
private int formules;

public static void main(String []args){
SpreadSheet sh = new SpreadSheet(4, 6, 15, 2);
sh.put("11", 1); // String cell, double value
sh.put("12", 2); // String cell, double value
sh.put("test", 3); // String cell, double value
sh.put('2', 2); // char col, double value
sh.put(3, "test"); // int row, String value
}

public SpreadSheet(final int rows, final int columns, final int width, int precision) {
this.sheet = new String [4][6];
for (int ir = 0; ir < rows; ir++){
System.out.print(ir + 1);
System.out.print(" ");
for (int ic = 1; ic < columns; ic++) {
//System.out.print(" ");
put(2, 3);
printSheet();
for (int iw = 1; iw < (width); iw++) {
//System.out.print(iw); // test width
}
System.out.print("|");
}
System.out.println();
}
}
private void printSheet() {
System.out.print(sheet[data][formules]);
}
/*private void put(int row, int col, double value){
}*/
private void put(String cell, double value){
sheet[0][0] = String.valueOf(value);
}
private void put(int col, double value){
sheet[0][0] = String.valueOf(value);
}
private void put(int row, String value){
sheet[1][0] = String.valueOf(value);
}
}

最佳答案

如果你想调用put(char...而不是put(String...您需要将字符放在单引号中。

此外,您正在尝试在初始化二维数组之前填充它。

在构造函数的开头,您需要添加如下内容:

this.sheet=new String[rows][columns]

我忍不住注意到你的 put 的过载要么过于可爱,要么完全错误,这取决于你想要实现的目标。你为什么不直接拥有:

 public void put(int row, int col, double value)
{
sheet[row][col] = String.valueOf(value);
}

编辑:您的代码仍然存在一些问题:

1- 您现在正在正确初始化sheet在你的构造函数中,但你忘记了 values

2-您可以初始化与 final int 绑定(bind)的二维数组但您仍然对维度进行硬编码,而不考虑构造函数中传递的值

3- 我建议不要使用 String.valueOf(value)当你知道值的类型时。您不会总是知道 String.valueOf 的哪个重载正在被调用,并且您依赖编译器为您选择合适的函数。这是不必要的,而且可能很危险。

例如代替

   private void put(int col, double value)
{
sheet[0][0] = String.valueOf(value);
}

做:

   private void put(int col, double value)
{
sheet[0][col] = Double.toString(value);
//just convert double to String, nothing fancy
}

而不是

private void put(int row, String value)
{
sheet[1][0] = String.valueOf(value);
}

尝试:

private void put(int row, String value)
{
sheet[row][0] = value; //value is already a String
}

现在,至于使用java.lang.String对象来指定二维数组中的坐标,这是完全不明智的!当然,你可以变得可爱并拥有类似的东西:

private void put(String cell, double value)
{
int i =Integer.parseInt( cell.substring(0, 1));
int j =Integer.parseInt( cell.substring(1));
sheet[i][j] = Double.toString(value);
}

但我不建议这样做。如果String cell,这段代码当然会惨败。长度不完全是 2 个字符(这实际上排除了维度大于 9 的可能性)

如果您想传递 2d 坐标,我建议您使用 ArrayList尺寸为 2

关于java - 将数据放入二维数组并将其打印到预定义的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34516600/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com