我的任务是创建一个程序,使用参数(行和列)显示模式,必须从键盘读取行数和列数,并且必须使用2个循环。我尝试了它并且它在某种程度上是正确的但我不想在for循环中增加但是每当我删除它时我都没有得到所需的模式
例如,如果我输入行:2和列:4,则模式将包含3行和5列
对于行,我需要这样的模式:2和列:4喜欢
XXXX
XXXX
有人会帮我说出问题所在吗?
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("Enter number of rows");
int rows = in.nextInt();
System.out.println("Enter number of columns");
int columns = in.nextInt();
Pattern(rows, columns);
}
public static void Pattern (int rows, int columns) {
for ( int i=0; i <= rows ;i++) {
for ( int a=0; a<= columns ;a++) {
System.out.print("X");
// only print to have pattern on same row
}
System.out.println();
}
}
答案 0 :(得分:3)
将<=
替换为<
,或从1
开始,而不是0
。
看一下这个循环for (int i = 0; i<=3; i++){ }
i=0
,i<=3
(0<=3
true)让我们继续并将其增加到1 i=0
,i<=3
(1<=3
true)让我们继续并将其增加到2 i=0
,i<=3
(2<=3
true)让我们继续并将其增加到3 i=0
,i<=3
(3<=3
true)让我们继续并将其增加到4 i=0
,i<=3
(4<=3
false)让停止所以你看到循环迭代4
次,因为有4个整数值从0
开始,少或等于 到3(这些值是0,1,2,3)。要使其循环3次,您需要从接受的整数集中删除一个值,因此要么将其设为
1, 2, 3
(1
)开始,int i = 1
0, 1, 2
在条件中不接受3
作为有效参数,因此请考虑将其写为
i<3
(经常使用,你应该习惯它)i<=2
。答案 1 :(得分:2)
您的错误在:
for ( int i=0; i <= rows ;i++) {
for ( int a=0; a<= columns ;a++) {
问题是i
从0
开始,一直到rows
(与a
和columns
相同)
解决这个问题的方法就是改变:
int i=0
到
int i=1
为a。做同样的事。
这被称为&#34;关闭一个错误&#34;并且足以让它拥有自己的名字。 (你并不孤单:))
您也可以将<=
更改为<
以解决此问题。