如何在我正在制作的俄罗斯方块游戏中旋转java中的字符串数组。例如,字符串数组
[
"JJJJ",
"KKKK",
"UUUU"
]
会变成
[
"UKJ",
"UKJ",
"UKJ",
"UKJ"
]
我可以使用此代码
使用char矩阵public char[][] rotate(char[][] toRotate)
{
char[][] returnChar = new char[toRotate[0].length][toRotate.length];
for(int rows = 0; rows<toRotate.length; rows++)
{
for(int cols = 0; cols<toRotate[0].length; cols++)
{
returnChar[cols][toRotate.length-1-rows]=toRotate[rows][cols];
}
}
return returnChar;
}
答案 0 :(得分:1)
字符串在Java中是不可变的,因此您有几个选项
3基本上就是你应该做的事情。在俄罗斯方块游戏中,您将创建一个游戏区域大小的矩阵(可能填充)。
答案 1 :(得分:1)
使用Array String类似于你想要的:
public static String[] rotate(String [] toRotate)
{
String [] returnChar = new String[toRotate[0].length()];
String [] result = new String[toRotate[0].length()];
Arrays.fill(returnChar, "");
for(int rows = 0; rows<toRotate.length; rows++)
for(int cols = 0 ; cols < toRotate[rows].length(); cols++)
returnChar[cols] = returnChar[cols] + toRotate[rows].charAt(cols);
for(int i = 0; i < returnChar.length; i++)
result[i] = new StringBuffer(returnChar[i]).reverse().toString();
return result;
}
我遍历数组char
上每个String
中的所有toRotate
,将此char(toRotate[rows].charAt(cols)
)连接到数组returnChar[cols]
上的每个字符串returnChar
1}}
答案 2 :(得分:0)
此功能可以将字符串转换为char[][]
,以便您可以使用您的功能。
public static String[] rotateString(String[] toRotate) {
char[][] charStrings = new char[toRotate.length][];
for(int i = 0; i < toRotate.length; i++) {
charStrings[i] = toRotate[i].toCharArray();
}
// This is YOUR rotate function
char[][] rotatedStrings = rotate(charStrings);
String[] returnStrings = new String[rotatedStrings.length];
for(int i = 0; i < rotatedStrings.length; i++) {
returnStrings[i] = new String(rotatedStrings[i]);
}
return returnStrings;
}