Java can';我找不到如何编程这个数字模式
我被要求输入一个数字rc,并基于rc构造这个模式。我可以初始化表格,但没有突出显示的数字:Java can';我找不到如何编程这个数字模式,java,Java,我被要求输入一个数字rc,并基于rc构造这个模式。我可以初始化表格,但没有突出显示的数字: int [][] num2 = new int [rc][rc]; counter = 1; for(int i = 0; i < rc; i++){ if(i!=0) counter--; for(int j =0; j < rc; j++){ num2 [i] [j] = counter;
int [][] num2 = new int [rc][rc];
counter = 1;
for(int i = 0; i < rc; i++){
if(i!=0)
counter--;
for(int j =0; j < rc; j++){
num2 [i] [j] = counter;
counter ++;
}
}
int[]num2=新的int[rc][rc];
计数器=1;
对于(int i=0;i
有什么提示或想法吗?你有一部分是对的。每行上打印的数字相同,但起点每次递增1。因此,您可以再次使用变量i来移动它
int [][] num2 = new int [rc][rc];
int counter = 1;
for (int i = 0; i < rc; i++) {
for (int j = 0; j < rc; j++) {
num2[i][(j + i) % rc] = counter++;
}
}
int[]num2=新的int[rc][rc];
int计数器=1;
对于(int i=0;i
以下代码可以很好地解决您的问题
int rc=5;
int [][] num2 = new int [rc][rc];
int counter = 1;
for(int i = 0; i < rc; i++){
for(int j =i; j < rc; j++){
num2 [i] [j] = counter;
counter ++;
}
for(int k =0; k < rc; k++){
if(num2[i][k]==0){
num2 [i] [k] = counter;
counter++;
}
System.out.print(num2[i][k]+"\t");
}
System.out.println();
}
int rc=5;
int[][]num2=新的int[rc][rc];
int计数器=1;
对于(int i=0;i
我的解决方案背后的逻辑是:
- 首先从
填充一个数组,其中1-N
是用户输入(或N
在这种情况下):rc
- 然后,我们检查它是否不是第一行,如果是,我们只是打印 数字按顺序排列
- 现在,我们必须知道哪些数字先出现:
- 在第1行(请记住它从0开始),它必须打印[1][0]中[1][4]处的数字,因此我们的循环减去
,得到:5-1+0,实际上是索引[4]rc-i+j
- 我们知道,在我们先打印最后的数字之后,我们必须继续这个序列,所以我们在[1][1]处打印索引:[1][0](为什么是1,2?因为否则我们会得到下面的例子,这就是为什么我们需要将1减去它的原因
1 2 3 4 5 10 7 8 9 10
- 在第1行(请记住它从0开始),它必须打印[1][0]中[1][4]处的数字,因此我们的循环减去
public class StrangePattern {
public static void main(String[] args) {
int rc = 5;
int number = 1;
int spaces = 0;
int[][] numbers = new int[rc][rc];
for (int i = 0; i < rc; i++) {
for (int j = 0; j < rc; j++) {
numbers[i][j] = number;
number++;
}
}
for (int i = 0; i < rc; i++) {
for (int j = 0; j < rc; j++) {
if (i != 0) {
if (j < i) {
System.out.print(numbers[i][rc - i + j] + "\t");
} else {
System.out.print(numbers[i][j - spaces] + "\t");
}
} else {
System.out.print(numbers[i][j] + "\t");
}
}
spaces++;
System.out.println();
}
}
}
对于rc=3
,这个是:
1 2 3
6 4 5
8 9 7
比我的溶液清洁得多:)+1
1 2 3
6 4 5
8 9 7