import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int i = 0;
int x;
x=input.nextInt();
int y;
y=input.nextInt();
while(i<y){
for ( i = 1; i <=y; i=i+x) {
for ( int j = i; j <=(i+(x-1)); j++) {
if(x%2==0 && y%3==0)
{
System.out.print((j-1)+" ");
}
else
System.out.print(j+" ");
}
System.out.println();
}
}
示例输入:
3 99
这是我应该得到的输出:
1 2 3
4 5 6
7 8 9
10 11 12
...
97 98 99
但是当我把输入作为
时4 99
我得到的输出是:
0 1 2 3
4 5 6 7
....
96 97 98 99
我不应该从0开始。
我的代码有什么问题?
答案 0 :(得分:0)
我试着稍微改写你的代码,以免它变得如此混乱。这是你想要达到的目标吗?
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int x=input.nextInt();
int y=input.nextInt();
for (int i = 1; i < y + 1; i++) {
System.out.print(i + " ");
if (i % x == 0){
System.out.println();
}
}
input.close();
}
答案 1 :(得分:0)
Scanner input=new Scanner(System.in);
int i = 1;
int j = 0;
int x;
x=input.nextInt();
int y;
y=input.nextInt();
for( i = 1; i <=y; i++) {
System.out.print(i);
System.out.print(" ");
j++;
if(j == x){
System.out.println();
j = 0;
}
}
您可以使用此代码按预期输出。
答案 2 :(得分:0)
你的第一个输出将是4,因为那时x = 3且y = 99.两者都没有,所以你的其他块也会被击中。将if(x%2==0 && y%3==0)
更改为if(x%2==0 || y%3==0)
,第一个输出结果为0。这不会完全解决你的问题,但它会让你走上正确的道路。
答案 3 :(得分:-1)
你开始j=1
(因为第一次进入循环时i = 1)
如果x%2 == 0
(在这种情况下),则打印j-1
当然你会从0开始,我不明白为什么你会感到惊讶。
如果你想避免这种情况,只需打印:
(j-1)==0 ? "" : j-1 + " "