繁体   English   中英

Java中for循环内的if语句

[英]If statement inside a for loop in Java

我是Java的新手,正在尝试做一些琐碎的事情和练习,但是我遇到了这个麻烦,我希望当输出达到1或0时,“ ducks”一词是单数,这是我的代码:

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只小鸭子回来了

一天有3只小鸭子出山,在远处的山丘上,鸭妈妈说嘎嘎,嘎嘎,嘎嘎,嘎嘎,但只有两只鸭子回来了

一天有2只小鸭子出山,在山上和远处,母鸭说嘎嘎,嘎嘎,嘎嘎,嘎嘎,但只有一只鸭子回到了

一天有1只小鸭子出山,在远处的山丘上,母鸭说嘎嘎,嘎嘎,嘎嘎,嘎嘎,但只有0只小鸭子回来了

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

循环的每次迭代都会打印两行-一行使用duck的当前计数器,另一行使用duck-1 但是,您为基于duck word分配了一个值,因此,即使duck-1为1,当duck为2时,单词也是"ducks" 。解决此问题的一种方法是从循环中提取单词的计算并求值它单独:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM