比较&解析2D数组元素

时间:2014-10-30 04:48:01

标签: java arrays compare multidimensional-array parseint

我正在尝试parseDouble列1.之后,如果第1列中的元素< 5如果第2列中的元素对于同一行等于“是”,则打印出相应的行。我试图遍历每一行,看看标准是否匹配。问题是我一直没有得到任何内容或打印出来而不是行信息:[Ljava.lang.String; @ 3b3c9741。另外,我得到这个错误:找不到符号 - 变量parseDouble。任何建议都非常感谢。

       String[][] input = new String[20][5];
       double d = Double.parseDouble[][0];  //parseDouble column 1

       for(int row=0; row<input.length; row++){
           for(int col=0; col<input[row].length;col++ ){
               if(input[row].length<5 && input[row].equals("yes"))
                   System.out.println(input[row]);
           }
       }

1 个答案:

答案 0 :(得分:0)

首先 -

    Double.parseDouble[][0];    //is wrong
    Double.parseDouble("1")     //is proper

在上面,您应该注意到parseDouble方法被定义为以String类型作为参数。在您的情况下,您也缺少括号。

所以,如果我真的非常努力地让它发挥作用 - 我会做类似的事情

    Double.parseDouble([][0]);         //or
    Double.parseDouble(input[][0]);    //both usage are incorrect

请参阅下文,了解您应该如何使用这些索引

    int[][] a = {{1, 2}, {3, 4}};
    //a[0] points to {1, 2}
    //a[1] points to {3, 4}
    //a[][0] is invalid
    //a[0][0] points to 1
    //a[0][1] points to 2
    //a[1][0] points to 3
    //a[1][1] points to 4

现在,将比较if(input[row].length<5 && input[row].equals("yes"))修改为

if(input[row].length<5 && Arrays.toString(input[row]).replaceAll("\\[|\\]|,|\\s", "").equals("yes"))
//or for case insensitive comparison
if(input[row].length<5 && Arrays.toString(input[row]).replaceAll("\\[|\\]|,|\\s", "").equalsIgnoreCase("yes")) 

当您说打印System.out.println(input[row])时 - 这意味着您正在尝试打印数组

使用System.out.println(Arrays.toString(input[row]));代替打印数组。