[英]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.