Java中for循环中的If语句

Java中for循环中的If语句,java,Java,我是Java新手,尝试做一些琐碎的事情和练习,不过我有一个想法,我希望“ducks”一词在输出达到1或0时是单数的,下面是我的代码: public class FiveLittleDucks { public static void main(String[] args) { String word = ""; System.out.println("The story of the 5 little ducks"); for(int

我是Java新手,尝试做一些琐碎的事情和练习,不过我有一个想法,我希望“ducks”一词在输出达到1或0时是单数的,下面是我的代码:

public class FiveLittleDucks {

    public static void main(String[] args) {

        String word = "";

        System.out.println("The story of the 5 little ducks");
        for(int duck = 5 ; duck>0 ; duck--) {
            if(duck == 1 || duck == 0) {
                word = "duck";
            } else {
                word = "ducks";
            }
            System.out.printf("%d little %s went out one day, over the hills and far away, mother duck said quack, quack, quack, quack", duck, word);
            System.out.printf(" but only %d little %s went back\n", duck-1, word);
        }
    }
}
以下是输出: 五只小鸭子的故事

有一天,五只小鸭出去了,越过山丘,远远地,鸭妈妈说嘎嘎,嘎嘎,嘎嘎,但是只有四只小鸭回去了

有一天,四只小鸭出去了,越过山丘,远远地,鸭妈妈说嘎嘎,嘎嘎,嘎嘎,但是只有三只小鸭回去了

有一天,三只小鸭出去了,越过山丘,远远地,鸭妈妈说嘎嘎,嘎嘎,嘎嘎,但是只有两只小鸭回去了

有一天,两只小鸭出去了,越过山丘,远远地,鸭妈妈说嘎嘎,嘎嘎,嘎嘎,但是只有一只小鸭回来了

一天,一只小鸭出去了,越过小山,走到很远的地方,鸭妈妈说嘎嘎,嘎嘎,嘎嘎,但是只有0只小鸭回去了


注意,“1小鸭子”仍然是复数形式,而底线已经是单数形式。。谢谢大家。

循环的每一次迭代都会打印两行-一行当前计数器为
duck
,另一行为
duck-1
。但是,您根据
duck
word
赋值,因此当
duck
为2时,单词为
“ducks”
,即使
duck-1
为1。解决此问题的一种方法是从循环中提取单词的计算结果,并对其进行单独评估:

public static void main(String[] args) {
    System.out.println("The story of the 5 little ducks");
    for(int duck = 5 ; duck>0 ; duck--) {
        System.out.printf("%d little %s went out one day, over the hills and far away, mother duck said quack, quack, quack, quack", duck, ducksToWord(duck));
        System.out.printf(" but only %d little %s went back\n", duck-1, ducksToWord(duck-1));
    }
}

private static String ducksToWord(int duck) {
    if (duck == 1 || duck == 0) {
        return "duck";
    } 
    return "ducks";
}

这是因为你在计算
duck-1
,但是测试了
duck
。所以当ducks=2时,得到复数形式,然后输出duck-1,这是单数形式。因为有两个地方可以输出duck count,而且它们的值不同,所以需要两个duck/ducks字符串。哇!谢谢你,老兄,做得很好。。我尽可能地保持它的紧凑和简洁,这就是为什么我没有像99瓶啤酒一样使用while循环。。再次感谢你,伙计。。