如果语句在Java中的for循环中

时间:2016-10-13 16:52:50

标签: java

我是Java的新手并试图做一些琐碎的事情和练习,但是我遇到了这个问题,当输出达到1或0时,我希望单词“ducks”是单数,这是我的代码:< / p>

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);
        }
    }
}

这是输出: 5只小鸭子的故事

有一天,5只小鸭子出去了,在山上和远处,鸭妈说嘎嘎,嘎嘎,嘎嘎,嘎嘎,但只有4只小鸭子回来了

有一天,4只小鸭子出去了,在山上和远处,鸭妈说嘎嘎,嘎嘎,嘎嘎,嘎嘎,但只有3只小鸭子回来了

有一天,有三只小鸭子出门,在山上和远处,鸭妈说嘎嘎,嘎嘎,嘎嘎,嘎嘎,但只有两只小鸭子回来了

有一天,两只小鸭子出去了,在山上和远处,鸭妈说嘎嘎,嘎嘎,嘎嘎,嘎嘎,但只有 1只小鸭子 回来了/ p> 有一天,一只小鸭子出门,在山上和远处,鸭妈说嘎嘎,嘎嘎,嘎嘎,嘎嘎,但只有0只小鸭子回去了

注意“1只小鸭子”仍然是复数形式,而底线已经是单数形式..谢谢你们..

1 个答案:

答案 0 :(得分:2)

循环的每次迭代都会打印两行 - 一行使用当前计数器duck,另一行使用duck-1。但是,您根据wordduck分配了一个值,因此当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";
}
相关问题