【问题标题】:Compare & Parse 2D array elements比较和解析二维数组元素
【发布时间】:2014-12-26 00:55:56
【问题描述】:

我正在尝试解析第 1 列。然后,如果第 1 列中的元素

       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]);
           }
       }

【问题讨论】:

  • System.out.println(budget[row]) 实际上不是一个字符串,它是 String[]。我注意到您的循环在行中移动,但没有在列中移动。如果您希望它在列中移动,则需要在现有循环中添加另一个 for 循环,即 `for (int col = 0; col

标签: java arrays compare multidimensional-array parseint


【解决方案1】:

第一-

    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&lt;5 &amp;&amp; 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")) 

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

改用System.out.println(Arrays.toString(input[row])); 来打印数组。

【讨论】:

  • 我实施了您的建议,但屏幕上没有打印任何内容。并且有满足 if 语句的行。
  • 即使使用“不区分大小写比较”,也不会改变结果。
  • 发生了什么?您可以很好地执行它,但结果不是您所期望的,或者您遇到了一些错误?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-24
  • 1970-01-01
  • 2015-02-10
  • 1970-01-01
相关资源
最近更新 更多