在java中如何逆时针旋转此数组?
这里有个问题。请帮帮我 输入一个星束。(星=“*”) 假设你一个接一个地输入一组星星。 逆时针旋转90度输出。 在第一行中,用空格分隔星形束。存储星形捆绑包的数组必须用空格字符(“”)初始化。 从第二行开始,打印一个旋转星在java中如何逆时针旋转此数组?,java,Java,这里有个问题。请帮帮我 输入一个星束。(星=“*”) 假设你一个接一个地输入一组星星。 逆时针旋转90度输出。 在第一行中,用空格分隔星形束。存储星形捆绑包的数组必须用空格字符(“”)初始化。 从第二行开始,打印一个旋转星 import java.util.Scanner; 公共类旋转{ 公共静态void main(字符串[]args){ 扫描仪sc=新的扫描仪(System.in); int n=sc.nextInt(); int[]A=新的int[n][n]; int K=1; 对于(in
import java.util.Scanner;
公共类旋转{
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
int n=sc.nextInt();
int[]A=新的int[n][n];
int K=1;
对于(int i=0;i使用s=sc.nextLine()
将输入作为字符串。例如,如果用户输入******
,则得到与s=“*******”
相同的结果
在空格上拆分行,以便得到String[]arr={“***”、“*”、“***”}
查找最长的字符串,例如,在本例中,您得到longest=3
数组的大小是生成的三维网格的宽度,最长的字符串是网格的高度,因此创建网格:char[][]grid=new char[longest][arr.length];
用空格填充网格
现在迭代arr
,从底部开始构建网格的每一列
…arr[0]*…arr[1]*…arr[2]*。。
... -------> *.. -------> *.. -------> *.*
... *.. **. ***
打印网格
static void rotate(字符串输入){
String[]words=input.split(“”);
int rows=Arrays.stream(words).mapToInt(String::length).max().orElse(0);
char[][]grid=new char[rows][words.length];
数组.stream(grid).forEach(行->数组.fill(行“”);
for(int i=0;i
测验
旋转(“*****”);
旋转(“****”);
旋转(“敏捷的棕色狐狸跳过懒狗”);
输出
*
* *
***
*
*
**
***
kns
连续波pry
eioxmeezg
胡鲁夫豪
Tqbfjotld
“有个问题。”-不,你已经发布了你的任务,但没有说明你遇到了什么问题。乍一看,你的旋转代码看起来不错。但是,当我从没有固定矩阵的星星那里得到输入时,我不知道该怎么办。那么,矩阵肯定会有n*m维,或者至少你应该这样对待它。当旋转时,它会变成m*n矩阵,也就是说,你只需要交换2维的长度。我尝试过这个,但我得到了这个错误“java.lang.NumberFormatException”。这是什么意思?@jjigaebudae因为这个代码没有解析任何数字,我不知道你从哪里得到这个错误。
import java.util.Scanner;
public class Spin {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n = sc.nextInt();
int[][] A = new int[n][n];
int K = 1;
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
A[i][j] = K++;
}
}
public static int[][] leftRotate(int n, int[][] A) {
int[][] B = new int[n][n];
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
B[i][j] = A[j][n-i-1];
}
}
}
}
}