2015-12-13 90 views
0

我必须对着名的“FizzBu​​zz”代码做一个变化,计算出用户输入的数字,并且每行仅打印11个数字。我的代码似乎有点工作,但它重复每行11次相同的东西。每行打印11个数字?

有人可以帮我解决这个问题吗?

import javax.swing.JOptionPane; 

public class CozaLoza2 { 
    public static void main(String[] args) { 

     String n = JOptionPane.showInputDialog("Please input an interger"); 
     int result = Integer.parseInt(n); 
     for (int i = 0; i <= result; i++) { 
      for (int j = 0; j <= 10; j++) { 

       System.out.print(" "); 

       if (i % 3 == 0 && i % 5 == 0 && i % 7 == 0) { 
        System.out.print("CozaLozaWoza"); 
       } 

       if (i % 3 == 0 && i % 5 == 0) { 
        System.out.print("CozaLoza"); 

       } else if (i % 5 == 0) { 
        System.out.print("Loza"); 

       } else if (i % 3 == 0) { 
        System.out.print("Coza"); 

       } else if (i % 7 == 0) { 
        System.out.print("Woza"); 

       } else { 
        System.out.print(" " + i); 
       } 
      } 
     } 
     System.out.println(); 
    } 
} 

这里的输出我得到的,如果我输入 “20” 的数字成程序

CozaLozaWozaCozaLoza CozaLozaWozaCozaLoza CozaLozaWozaCozaLoza CozaLozaWozaCozaLoza CozaLozaWozaCozaLoza CozaLozaWozaCozaLoza CozaLozaWozaCozaLoza CozaLozaWozaCozaLoza CozaLozaWozaCozaLoza CozaLozaWozaCozaLoza CozaLozaWozaCozaLoza 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 Coza Coza Coza Coza Coza Coza Coza Coza Coza Coza Coza Coza 4 4 4 4 4 4 4 4 4 4 4 Loza Loza Loza Loza Loza Loza Loza Loza Loza Loza Loza Loza Coza Coza Coza Coza Coza Coza Coza Coza Coza Coza Coza Coza Coza Woza Woza Woza Woza Woza Woza Woza Woza Woza Woza Woza 8 8 8 8 8 8 8 8 8 8 8 Coza Coza Coza Coza Coza Coza Coza Coza Coza Coza Coza Coza Coza Loza Loza Loza Loza Loza Loza Loza Loza Loza Loza Loza Loza Loza Loza 11 11 11 11 11 11 11 11 11 11 11 Coza Coza Coza Coza Coza Coza Coza Coza Coza Coza Coza Coza Coza 13 13 13 13 13 13 13 13 13 13 13 Woza Woza Woza Woza Woza Woza Woza Woza Woza Woza Woza Coza Loza Coza Loza Coza Loza Coza Loza Coza Loza Coza Loza Coza Loza Coza Loza Coza Loza Coza Loza Coza Loza 16 16 16 16 16 16 16 16 16 16 16 17 17 17 17 17 17 17 17 17 17 17 Coza Coza Coza Coza Coza Coza Coza Coza Coza Coza Coza 19 19 19 19 19 19 19 19 19 19 19洛萨洛萨洛萨洛萨洛萨洛萨洛萨洛萨洛萨洛萨洛萨

+0

它不清楚你所期望的精品工程。请发布输入和期望输出 – Rehman

+0

请正确缩进您的代码,您可以使用IDE为您完成此操作。否则很难读取代码。 – user1803551

+0

是的,它重复了11次,这就是'for(int j ...'循环所做的事情。如果你不想这样做,循环中的代码应该可能以某种方式依赖于'j'。 – Henry

回答

1

我很高兴地宣布,你自己缺乏缩进是你的失败。这个烂摊子

} 
} 
    } 
    System.out.println(); 
} 
} 

应该是这个烂摊子:

} 
} 
    System.out.println(); 
    } 
} 
} 

现在去学习如何缩进和解决您的压痕。

另外,在外环for (int i = 0; i <= result; i++)中,您正在运行result + 1值。可能你需要i < result

(以防万一,这个问题被编辑过,我说的是原件。)

0

你的代码产生完全相同:(!末)

input (20 in your test) : for (int i=0; i<=result; i++) 

x 11 : for (int j=0; j<=10; j++) 

而且只有一个CRLF =>放它之前

0

可能你必须移动System.out.println();上面的一个括号。此代码应该是

import javax.swing.JOptionPane; 

public class CozaLoza2 { 
    public static void main(String[] args) { 

     String n = JOptionPane.showInputDialog("Please input an interger"); 
     int result = Integer.parseInt(n); 
     for (int i = 0; i <= result; i++) { 
      for (int j = 0; j <= 10; j++) { 

       System.out.print(" "); 

       if (i % 3 == 0 && i % 5 == 0 && i % 7 == 0) { 
        System.out.print("CozaLozaWoza"); 
       } 

       if (i % 3 == 0 && i % 5 == 0) { 
        System.out.print("CozaLoza"); 

       } else if (i % 5 == 0) { 
        System.out.print("Loza"); 

       } else if (i % 3 == 0) { 
        System.out.print("Coza"); 

       } else if (i % 7 == 0) { 
        System.out.print("Woza"); 

       } else { 
        System.out.print(" " + i); 
       } 
      } 
      System.out.println(); // moved line 
     } 
    } 
}