我有一个包含大量行和列的二维数组,随机数在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(" ");
}
}
答案 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]]