Java 如何获取第一列';从二维数组中删除内容
如何从2D数组中提取第一列?我正在用这样的方法初始化我的数组Java 如何获取第一列';从二维数组中删除内容,java,arrays,2d,Java,Arrays,2d,如何从2D数组中提取第一列?我正在用这样的方法初始化我的数组 //Initialise the array with the values from the file public static float[][] data(float[][] data, Scanner scan){ int count = 0; for (int i=0;i<data.length;i++){ for (int j=0;j<data[0].length;j++)
//Initialise the array with the values from the file
public static float[][] data(float[][] data, Scanner scan){
int count = 0;
for (int i=0;i<data.length;i++){
for (int j=0;j<data[0].length;j++){
count++;
if(count<data.length*data[0].length){
for(int k=0;k<2; k++){
data[i][j] = (float) IOUtil.skipToDouble(scan);
System.out.print(data[i][j] + " ");
}
System.out.println();
}
}
}
return data;
}
但问题是当我试图调用左边的列时,我得到的是右边的列。我不确定这是否是因为右边的值是唯一被存储的值
//should print x but actually prints y
public static void printX(float[][] data){
for (int i=0;i<data.length;i++){
for (int j=0;j<data[0].length;j++){
System.out.println(data[i][j]);
}
}
}
有谁能解释一下,我怎样才能从2D数组中获得左侧列上的数据?或者是否有其他方法来实现这类目标 我不理解您的代码,但我希望这有助于:
float[][] data = new float[10][2];
// ... fill the array with data
// print 'left' column:
for (int i = 0; i < data.length; i++) {
System.out.println(data[i][0]);
}
float[][]数据=新的float[10][2];
// ... 用数据填充数组
//打印“左”列:
对于(int i=0;i
您需要使用IDE上的调试器,并逐步检查代码,以查看到底发生了什么。我的简短回答是,对于k=0和k=1,您正在用读取的数据对同一字段进行两次重击
编辑
同样在您的更新中,我认为您正在第二次打印循环中寻找这个(这并不重要,也可能是2,但在IMO中这更好):
如果您想强制执行我认为k正在执行的2列,类似于:
public static float[][] data(float[][] data, Scanner scan){
for (int i=0;i<data.length;i++){
for (int j=0;j<2;j++){
data[i][j] = (float) IOUtil.skipToDouble(scan);
System.out.print(data[i][j] + " ");
}
System.out.println();
}
return data;
}
公共静态浮点[][]数据(浮点[][]数据,扫描仪扫描){
对于(inti=0;i您打算如何处理这部分代码
for(int k=0;k<2; k++){
data[i][j] = (float) IOUtil.skipToDouble(scan);
System.out.print(data[i][j] + " ");
}
在没有看到输入文件的情况下很难判断代码应该是什么,但我认为您正在寻找类似这样的内容:
public static float[][] data(float[][] data, Scanner scan){
for (int i = 0; i < data.length; i++) {
for (int j = 0; j < data[i].length; j++) {
data[i][j] = (float) IOUtil.skipToDouble(scan);
System.out.print(data[i][j] + " ");
}
System.out.println();
}
return data;
}
公共静态浮点[][]数据(浮点[][]数据,扫描仪扫描){
对于(int i=0;i
将数据放入二维数组时,会覆盖内容
在for循环中对数组执行两次for(int k=0;kc)可以显示第二个函数的输出吗?好的,现在就完成了-我应该这样做!问题在于数组初始化函数,即它没有将值放在您认为的位置。您在该函数中执行的操作:for(int k=0;我所有的帖子都是英式英语。如果我搬到别处,我会重新考虑编辑。在那之前,请坚持格式和语法结构等(除非你100%认为拼写错误,而不是外国的)。;-)对不起,我没听懂。我在intellij上运行了分析,但没有什么明显的。哦,我想我现在明白你的意思了。你是说我在第一列上写第二列?是的,你在数据[I][j]上写两次不改变i或j,当你在k中循环两次创建打印输出时。我对你如何命名这些方法感到有点困惑。把它们称为printX是有动机的吗?还是这是一个复制粘贴错误?我已经成功了,现在我完全明白了,我对2D数组的恐惧已经消除了。谢谢,不过我还是想e肯定在悬赏活动期间有一个真正完整的答案,因为我认为这可能会帮助其他正在与2D阵列概念作斗争的人(我要等几年才能得到50;)尽管所有的答案都是集体的,但大部分都是你的。没有一个看起来真的认识到我对二维数组的工作方式(java,还有其他C++语言)的理解。;我怀疑我们在战略上都被悬赏案否决了。不是我。这个答案对我的问题不起作用。我现在要检查一下其他的答案。我已经把输入文件的内容放在帖子上了。我会编辑以使这一点更清楚,因为我知道它可能不起作用。也是为了回答你的问题在上,我将读取第一个和第二个值,然后执行一行新的操作。如果您向我们展示IOUtil.skipToDouble(Scanner)
所做的事情,我们可以更好地帮助您跳过任何非数值的内容,如果您有一个带有标签的文件,但这个特定文件实际上并不需要,那么这非常有用!
//Only print X
public static void printX(float[][] data){
for (int i=0;i<data.length;i++){
System.out.println(data[i][0]);
}
}
//Only print Y
public static void printY(float[][] data){
for (int i=0;i<data.length;i++){
System.out.println(data[i][1]);
}
}
//Print both
public static void printBoth(float[][] data){
for (int i=0;i<data.length;i++){
System.out.println(data[i][0] + ", " + data[i][1]);
}
}
//Print any number in array:
public static void printAll(float[][] data){
for (int i=0;i<data.length;i++){
for (int j=0;j<data[i].length;j++){
System.out.print(data[i][j];
if (j+1 < data[i].length) {
System.out.print(", ");
} else {
System.out.println();
}
}
}
}
//Initialise the array with the values from the file
public static float[][] data(float[][] data, Scanner scan){
int count = 0;
for (int i=0;i<data.length;i++){
for (int j=0;j<data[0].length;j++){
count++;
if(count<data.length*data[0].length){
data[i][j] = (float) IOUtil.skipToDouble(scan);
System.out.print(data[i][j] + " ");
}
}
System.out.println();
}
return data;
}
public static float[][] data(float[][] data, Scanner scan){
for (int i=0;i<data.length;i++){
for (int j=0;j<2;j++){
data[i][j] = (float) IOUtil.skipToDouble(scan);
System.out.print(data[i][j] + " ");
}
System.out.println();
}
return data;
}
for(int k=0;k<2; k++){
data[i][j] = (float) IOUtil.skipToDouble(scan);
System.out.print(data[i][j] + " ");
}
(float) IOUtil.skipToDouble(scan);
public static float[][] data(float[][] data, Scanner scan){
for (int i = 0; i < data.length; i++) {
for (int j = 0; j < data[i].length; j++) {
data[i][j] = (float) IOUtil.skipToDouble(scan);
System.out.print(data[i][j] + " ");
}
System.out.println();
}
return data;
}
public static float[][] data(float[][] data, Scanner scan){
int count = 0;
for (int i=0;i<data.length;i++){
for (int j=0;j<data[0].length;j++){
count++;
if(count<data.length*data[0].length){
for(int k=0;k<2; k++){
data[i][j] = (float) IOUtil.skipToDouble(scan);
System.out.print(data[i][j] + " ");
j = j+1;
}
System.out.println();
}
}
}
return data;
}
public static void printX(float[][] data)
{
for (int i=0;i<data.length;i++)
{
System.out.println(data[i][0]);
}
}