打印图案中的行数和列数错误

时间:2014-10-01 16:04:42

标签: java

我的任务是创建一个程序,使用参数(行和列)显示模式,必须从键盘读取行数和列数,并且必须使用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();
    }
}

2 个答案:

答案 0 :(得分:3)

<=替换为<,或从1开始,而不是0

看一下这个循环for (int i = 0; i<=3; i++){ }

  1. i=0i<=30<=3 true)让我们继续并将其增加到1
  2. i=0i<=31<=3 true)让我们继续并将其增加到2
  3. i=0i<=32<=3 true)让我们继续并将其增加到3
  4. i=0i<=33<=3 true)让我们继续并将其增加到4
  5. i=0i<=34<=3 false)让停止
  6. 所以你看到循环迭代4次,因为有4个整数值从0开始,或等于 到3(这些值是0,1,2,3)。要使其循环3次,您需要从接受的整数集中删除一个值,因此要么将其设为

      1, 2, 31)开始,
    • 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++) {

问题是i0开始,一直到rows(与acolumns相同)

解决这个问题的方法就是改变:

int i=0

int i=1

为a。做同样的事。

这被称为&#34;关闭一个错误&#34;并且足以让它拥有自己的名字。 (你并不孤单:))

您也可以将<=更改为<以解决此问题。