【问题标题】:Issue with reading values from Multi-dimensional array从多维数组中读取值的问题
【发布时间】:2015-01-28 17:17:13
【问题描述】:

我正在研究一个问题,我需要将用户输入的坐标(以空格分隔)放入多维数组中。我正在尝试将“x”和“y”值分开并将它们分别存储在一个单维数组中,例如 x[i] 和 y[i]。

我在这里面临的问题是我无法从数组中读取“y”值。当我试图输出包含 y 值的数组时,它只显示 0。请帮助我解决这个问题。请在下面找到我的代码。

(注:N = 多维数组的行数,列数固定为2)(对不起,忘了R,用于其他用途)

public class Read{

public static void main(String[] args) {
    int  N = 1, R=1;
    double AoN=1;
    float d=0 , e=0, s=0, length=0;
    Scanner in = new Scanner(System.in);
    int[] arr = new int[2];
    System.out.println("Enter values of N and R separated by space: ");

    for (int i=0;i<arr.length;i++) {
        arr[i]=in.nextInt();
            if (arr[0]>=1 && arr[0]<=100) {
                N=arr[0]; //storing N 
            }
                R=arr[1]; //storing R
    }

    float[ ][ ] arr1 = new float[N][2];
    System.out.println("Enter Coordinates seperated by spaces: ");
    for(int i=0; i<N;i++) {
          for (int j=0;j<2;j++) {
              arr1[i][j]=in.nextFloat();
              //System.out.println(arr1[i][j]);
              }   
      }
    float[] x = new float[N];
    float[] y = new float[2]; // I've given 2 here coz the coordinates are always x and y. please correct me if im wrong.

    for(int i=0; i<N;i++) {
              x[i] = arr1[i][0];
              System.out.println(x[i]);
    }
    for (int j=0;j<N;j++) {
              y[j] = arr1[0][j];
          System.out.println(y[j]);

    }

输入:

2 1 (N, R)
0 0 (x1, y1)
1 3 (x2, y2)

输出:

0.0 (x1)
1.0 (x2)
0.0 (y1)
0.0 (y2)

包含'y'值的数组的输出总是0(应该是0和3)。请帮助。谢谢。

【问题讨论】:

  • 希望您为变量名称选择更好的命名方式:)
  • 什么是 N?什么是R?您可以为标识符选择任意不具描述性的名称,这会使您的代码阅读变得非常困难,但是请添加解释它们应该是什么的 cmets。谢谢
  • N为多维数组的行数,列固定为2。请查找更新问题。
  • 据我所知,您将y 值存储在arr1[i][1] 中;想想你试图从哪里检索它
  • @GermannArlington 是的。你是对的。它应该是 arr[j][1]。感谢您的帮助。

标签: java arrays multidimensional-array


【解决方案1】:

我认为你这里有一个错误......

    for (int j = 0; j < N; j++) {
        y[j] = arr1[0][j]; // <<< HERE!!
        System.out.println(y[j]);
    }

我想你的意思是……

    for (int j = 0; j < N; j++) {
        y[j] = arr1[j][1];
        System.out.println(y[j]);
    }

使用您输入的参数,当代码到达“float[] x =...”位时,“arr”的状态是...

arr = [2, 1]
arr1 = [[0.0, 0.0], [1.0, 3.0]]

第二个块总是选择二维数组的第一个元素,其中“j”的每个值都有“0”

【讨论】:

  • 是的。你是对的。谢谢你指出。它现在工作正常。由于它是一个多维数组,我们必须将第一个元素作为“j”,将第二个元素作为“1”。因为值是 01、11 等等。再次感谢。
猜你喜欢
  • 2015-09-10
  • 1970-01-01
  • 2019-04-08
  • 1970-01-01
  • 2018-05-28
  • 2015-05-20
  • 2012-09-29
相关资源
最近更新 更多