当前位置: 首页 > 知识库问答 >
问题:

将输入读入每行列数不同的int 2D数组

方玄天
2023-03-14

所以我们刚刚进行了一个小的实践考试,要求我们阅读以下格式的输入,作为非图形问题的规则。实际的算法一点也不难做到,但我和我的伙伴们都不知道如何从一开始就扫描这些输入。

4 4

1 1
1 2 3
1
1

0
2
1 1
2 2

*actual 4x4 grid here*

前两个整数表示行数(4)和列数。(4) 因此,接下来的四行表示每行的规则(1 2 3表示第2行),接下来的四行表示每列的规则(2 2表示第4列),依此类推。

在学习C语言一个学期后,我们只处理了每行具有相同列数的数组,在这个Java模块中学习了四周,我们根本没有学会处理这种问题。

使用nextInt()和double for循环扫描数组本来是很容易的,但如果没有零,我们在这一个上都不走运。

1 1 0
1 2 3
1 0 0 
1 0 0

考试结束了,但我真的很恼火不知道如何解决这个问题。希望你们能提供一些见解。

共有1个答案

单于钊
2023-03-14

在Java中,可以使用不同长度的多维数组。

试试这个:

int rows = 4; // read
int cols = 4; // read

int[][] arr = new int[rows][]; // notice how we do not tell the cols here
for(int i=0,i<arr.length;i++){
    // read line or somehow get the numbers of the line into an array
    String line = ...
    String[] splitLine = line.split(" ");
    int[] rowArr = new int[splitLine.length];
    for(int x=0;x<splitLine.length;x++){
        // assume no NumberFormatException
        rowArr[x] = Integer.parseInt(splitLine[x]);
    }
    arr[i] = rowArr;
}

然后,您的数组有4行,但每行只包含所需的列数:

{{1,1},{1,2,3},{1},{1}}

这是可行的,因为在Java,多维数组只是对数组的引用数组。

 类似资料:
  • 我正在从一个txt文件中读取一个等级列表到一个数组中。它在读取用户输入时运行良好,但在扫描文件时,我无法读取每一行。学生人数是可变的。每个学生的分数是可变的。我在阅读学生人数和作业数量方面没有问题,但在阅读文件时,我很难从每一行中提取每个学生的整数(分数)。输入可以是a或b(或更多的学生/作业): txt-example1(包括//和//之后的注释是我自己的,不在txt文件中) TXT-例子 我可

  • 使用Pandas或CSV模块将每行具有不同列数的CSV导入Pandas数据框的最佳方法是什么。 使用此代码: 生成以下错误

  • 在java中,我想创建并打印一个参差不齐的数组,用户首先必须输入行数,然后在每行中,用户必须输入数字列,然后在每列中输入他想要的数字,直到达到他为每行输入的数字,例如 在第一行中,用户输入4,以便键入四个数字 在第二行中,用户输入2,以便键入两个数字 在第三行,用户输入6,这样他可以键入四个数字 之后,它应该打印用户为每行输入的数字以及他输入的任何内容(它应该打印上面的示例) 但出于某种原因使用我

  • 我想将一个由每行不同列组成的数据表读取到一个数组中。 我的样本数据如下所示 我设法将其放入一个数组中,如下所示: 我尝试了上面的代码,但是每当有较短的列时,生成的数组总是具有最高的列计数和零。我想读取它,直到每行中的最后一个值,然后跳转到下一行。这个问题有什么解决方案吗?

  • 问题内容: 使用Pandas或CSV模块将每行具有不同列数的CSV导入Pandas DataFrame的最佳方法是什么。 使用此代码: 产生以下错误 问题答案: 在read_csv()中提供列名列表应该可以解决问题。 例如:names = [‘a’,’b’,’c’,’d’,’e’] https://github.com/pydata/pandas/issues/2981 编辑:如果您不想提供列名,

  • 我正在做一个由两部分组成的任务,第一部分是创建一个由3行4列组成的数组,然后让用户输入4个数字组成第一行的第一列。因此,如果用户输入1,2,3,4,那么数组应该打印出来:(0对于任务的第二部分,为空。 到目前为止,这就是我所拥有的,但我只使用Java几天,我确信我没有清楚地看到我的错误。我真的很感谢任何帮助我做错了什么。 这是我的代码: 至于任务的第二部分,第二行和第三行需要是该列第一行输入的任何