FizBuzz程序:如何使输出正确?
我有一个关于这个程序的问题,它说:FizzBuzz挑战:显示从1到x的数字,用3的倍数替换单词'fizz',用5的倍数替换'buzz',以及替换为'fizzbuzz'的倍数结果必须是:1 2嘶嘶声4嗡嗡声7 8嘶嘶声11嘶嘶声13 14嘶嘶声16 ...FizBuzz程序:如何使输出正确?
所以我的问题是在打印输出时,我不知道什么去做。
public class Multiplos {
public static void main(String args[]) {
for (int i = 1; i <= 100; i++) {
if (i % 3 == 0) {
System.out.print(i + " ");
System.out.print(" fizz ");
}
if (i % 5 == 0) {
System.out.print(" " + i);
System.out.print(" " + "buzz ");
}
if((i % 3 == 0)&&(i % 5 == 0)){
System.out.print(i + " ");
System.out.print(" fizzbuzz ");
}
}
}
}
这里是伪代码:
for i in 1 to 100
if(i % 5 == 0) AND (i % 3 == 0) print 'fizzbuzz'
else if(i % 3 == 0) print 'fizz'
else if(i % 5 == 0) print 'buzz'
else print i
我会离开它作为一个练习,你把它转换成Java,因为这可能与理解为这是如何工作的帮助。
的问题当然是当(i % 3 == 0)&&(i % 5 == 0)
是真实的,前两个条件都还不错,让你获得双重输出。解决这个问题的最简单方法是在前两种情况下检查其他条件不成立。即第一个条件为if((i % 3 == 0)&&(i % 5 != 0))
,第二个条件相同。
您的代码的另一个问题是,如果任何一种情况属实,您正在打印该数字,但是当它们都不是时,您应该打印它。你可以通过做第四个if条件来检查这些条件是否都是真的,如果是,就打印i。
现在,如果您已经完成了上述操作,您将看到最终出现了一些代码重复。如果你仔细想一想,你会发现,通过使用if - else if - else if - else,你可以很容易地解决这个问题,这可以让你在检查当前条件时假设前面的条件是错误的。
谢谢你的回答,我明白了 – bentham 2010-07-10 21:48:58
使用else if
使条件不重叠。
嗯,我想我会仅提示:按正确的顺序的
- 想:如果一个数是3的倍数,会发生什么,而且(3和5)?
- 有一个
else if
声明。
维基百科充满了对此的答案。 – 2010-07-10 22:03:18