数组操作-根据示例输入和输出编写程序
输入:
1 2 3 …… 24 …… 50 ……
输出:
1 9 17
2 10 18
3 11 19
4 12 20
5 13 21
6 14 22
7 15 23
8 16 24
25 33 ……
26 …… ……
27 …… ……
28 …… ……
29 …… ……
30 …… ……
31 …… ……
32 …… 48
49
50
代码实现:
import java.util.Scanner;
public class SimpleTag {
public static void main(String[] args) {
// 初始化输入数据 1……n
System.out.print("请输如数字:");
int shuru = new Scanner(System.in).nextInt();
if(shuru == 0) {
System.out.print("结束退出");
break;
}
int[] in = new int[shuru];
int total = in.length;
for(int i = 0;i<total;i++) {
in[i] = (i+1);
}
//
int pageSize = 24;//24个为一页
int step = 8;//步长
int columnSize = 3;// 按3列输出
int pageCount = total/pageSize;// 页数
int more = total%pageSize;//不足一页
int span = pageSize/step;
if(columnSize!=span) {
System.out.println("参数校验不通过!");
return;
}
// 循环 每 页
for(int i = 0;i < pageCount;i++ ) {
// 行范围
int start = i*pageSize;//include 起始行 首元素 对应的in[]数组索引号
int end = start + step;//exclude 结束行 首元素 对应的in[]数组索引号
for(int j = start;j < end;j++) {
// 列跨度范围
int startColumn = j; // 起始列 首元素 对应的in[]数组索引号
int endColumn = (startColumn+1)+step*span-step;// 结束列 首元素 对应的in[]数组索引号
for(int k = startColumn;k < endColumn;k+=step) {
// 按step输出
System.out.print(in[k] + "\t");
}
System.out.println();
}
}
// 处理结余
if(more>0) {
int start = pageSize*pageCount;
int end = start + step;
for(int j = start;j < end;j++ ) {
int startColumn = j;
int endColumn = (startColumn+1)+step*span-step;
for(int k = startColumn;k < endColumn;k+=step) {
// 按step输出
if(k < total) {
System.out.print(in[k] + "\t");
}else {
System.out.print(" " + "\t");
}
}
System.out.println();
}
}
}
}
总结:
矩阵转置