我是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只小鸭子”仍然是复数形式,而底线已经是单数形式..谢谢你们..
答案 0 :(得分:2)
循环的每次迭代都会打印两行 - 一行使用当前计数器duck
,另一行使用duck-1
。但是,您根据word
为duck
分配了一个值,因此当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";
}