繁体   English   中英

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

[英]Java: Converting ints to Strings in 2d array

我有一个二维数组,其中包含许多行和列,并且随机数在0到255之间。我试图在数组中查找特定整数的实例,即231到255之间的整数,然后简单地打印出一个String ,即“ /”,“。” 或空格,每次遇到这样的整数。 我想以下代码仅适用于列。 如何将其扩展为行?

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(" ");
    }
}

您编写的代码仅测试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("");
}

您也可以简单地遍历行,如果我正确理解了您想要的内容

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(" ");
        }
    }
}

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

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(" ");
        }
    }
}

如果我理解您的问题,那么我认为最简单的方法是使用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]]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM