Java:在2d数组中将int转换为字符串

时间:2014-11-13 07:10:25

标签: java arrays

我有一个包含大量行和列的二维数组,随机数在0到255之间。我正在尝试查找数组中特定整数的实例,即231到255之间的实例,并且只是打印输出一个字符串,即“/”,“。”或每个空间,每次遇到这样的整数。我想以下代码仅适用于列。我该如何将其扩展为行?

int[][] result = function(parameter);

System.out.println(Arrays.deepToString(result));
for (int i = 1; i <= result.length-1; i++) {
    if (result[i][i] >= 179 && result[i][i] <= 204) {
        System.out.print("\\");
    }   
    if (result[i][i] >= 205 && result[i][i] <= 230) {
        System.out.print(".");
    }   
    if (result[i][i] >= 231 && result[i][i] <= 255) {
        System.out.print(" ");
    }
}

4 个答案:

答案 0 :(得分:1)

您的代码仅测试2d数组对角线上的元素。你应该有一个嵌套循环来遍历整个数组:

for (int i = 0; i <= result.length-1; i++) {
  for (int j = 0; j <= result[i].length-1; j++) {
    if (result[i][j] >= 179 && result[i][j] <= 204) {
        System.out.print("\\");
    }   
    if (result[i][j] >= 205 && result[i][j] <= 230) {
        System.out.print(".");
    }   
    if (result[i][j] >= 231 && result[i][j] <= 255) {
        System.out.print(" ");
    }
  }
  System.out.println("");
}

答案 1 :(得分:1)

你也可以简单地遍历行,如果我理解你想要什么

int[][] result = function(parameter);

System.out.println(Arrays.deepToString(result));
for (int row = 0; row < result.length; row++) {     
    for (int col= 0; col< result[0].length; col++) {
        if (result[row][col] >= 179 && result[row][col] <= 204) {
            System.out.print("\\");
        }   
        if (result[row][col] >= 205 && result[row][col] <= 230) {
            System.out.print(".");
        }   
        if (result[row][col] >= 231 && result[row][col] <= 255) {
            System.out.print(" ");
        }
    }
}

答案 2 :(得分:1)

您可以使用以下方法将整数转换为字符串

Integer.toString(i)String.valueOf(i)

示例:

Integer.toString(result[i][j])

String.valueOf(result[i][j])

无论如何你的问题是你需要两个循环,一个用于行,第二个用于列,这就是为什么你只得到列的值:)

int[][] result = function(parameter);

System.out.println(Arrays.deepToString(result));
for (int row = 0; row < result.length; row++) {     
    for (int col= 0; col< result[0].length; col++) {
        if (result[row][col] >= 179 && result[row][col] <= 204) {
            System.out.print("\\");
        }   
        if (result[row][col] >= 205 && result[row][col] <= 230) {
            System.out.print(".");
        }   
        if (result[row][col] >= 231 && result[row][col] <= 255) {
            System.out.print(" ");
        }
    }
}

答案 3 :(得分:1)

如果我理解您的问题,那么我认为最简单的方法是使用StringBuilder并动态构建输出String。迭代多维数组中的每个数组,并测试每个值(使用else,以便每个测试都不会在逻辑上排除以前的测试),如

int[][] result = { { 1, 179 }, { 205, 231 }, { 256 } };
StringBuilder sb = new StringBuilder("[");
for (int i = 0; i < result.length; i++) {
    int[] arr = result[i];
    if (i != 0) {
        sb.append(", ");
    }
    sb.append("[");
    for (int j = 0; j < arr.length; j++) {
        if (j != 0) {
            sb.append(", ");
        }
        if (arr[j] >= 179 && arr[j] <= 204) {
            sb.append("\\");
        } else if (arr[j] >= 205 && arr[j] <= 230) {
            sb.append(".");
        } else if (arr[j] >= 231 && arr[j] <= 255) {
            sb.append(" ");
        } else {
            sb.append(arr[j]);
        }
    }
    sb.append("]");
}
sb.append("]");
System.out.println(sb.toString());

输出

[[1, \], [.,  ], [256]]