我有一个这种格式的二维数组(矩阵):
mongo --version
MongoDB shell version v3.4.1
git version: 5e103c4f5583e2566a45d740225dc250baacfbd7
OpenSSL version: OpenSSL 1.0.1t 3 May 2016
allocator: tcmalloc
modules: none
build environment:
distmod: debian71
distarch: x86_64
target_arch: x86_64
输入
String[][] start;
start = new String[4][4];
输出
d d + +
a d d +
a b b c
+ b _ d
目标是在数组周围交换/移动/移位下划线(“_”),除非我不能用“+”字符交换。我只能换掉这些字母。
我正在尝试让其他角色用“_”交换位置但不替换它们。我试图在循环中进行此操作
我不知道怎么回事。我很感激任何建议。
我通过在最后一行交换“_”和“b”来改变数组的状态。这是一个新的数组,我可以与初始状态进行比较。我必须将新状态存储在另一个数组中,以便与初始状态进行比较。
答案 0 :(得分:1)
你可以使用两个循环,因为你有2d数组并使用if检查你的值是否等于public static void main(String[] args) {
String[][] start = {{"d", "d", "+", "+"}, {"a", "d", "d", "+"}, {"a", "b", "b", "c"}, {"", "a", "_", "d"}};
for (int i = 0; i < start.length; i++) {
for (int j = 0; j < start[i].length; j++) {
System.out.print(start[i][j] + " ");
//here you should to check if your index is > 0
if (j > 0) {
//here you make your swapping if your attribute = to _
//and the previews value is not equal to + like you said in your question
if (start[i][j].equals("_") && !start[i][j-1].equals("+")) {
String x = start[i][j - 1];
start[i][j - 1] = "_";
start[i][j] = x;
}
}
}
System.out.println();
}
//print your result
for (int i = 0; i < start.length; i++) {
for (int j = 0; j < start[i].length; j++) {
System.out.print(start[i][j] + " ");
}
System.out.println();
}
}
你可以使用它:
d d + +
a d d +
a b b c
+ _ b d
结果是:
Words = ['Hi';'how','are','you','lets','meet','up']
答案 1 :(得分:0)
不确定交换和移动到底意味着什么。但是你的数组基本上只是一个内存网格。您只能为单元格指定新值。你无法移动价值观。如果您想要执行除分配之外的其他操作,则需要构建此操作。就像移动一样,可以将值分配给新单元格,而不是将旧单元格指定为null。在大多数情况下,交换需要一个临时变量。
答案 2 :(得分:0)
因为在将"_"
与其他包含字符串的字母表交换后,您的问题并不清楚。我给出了一个可能适合你的骨架程序。
String[][] start = new String[4][4];
for (int row = 0; row < start.length; row++) {
for (int column = 0; column < start[row].length; column++) {
if (start[row][column].equals("_")) {
// you can swap character "_" with other alphabets
}
}
}
要检查字符串是否只包含字母,可以使用以下内容。
if (start[row][column].matches("[a-zA-Z]+")) {
// string contains only alphabets, now you do what you want to do
}
特别是,您需要遍历矩阵的每一行和列,并检查字符串是否仅包含字母或下划线。然后你可以在访问矩阵的元素时进行交换,但要注意索引。