Java中for循环中的If语句
我是Java新手,尝试做一些琐碎的事情和练习,不过我有一个想法,我希望“ducks”一词在输出达到1或0时是单数的,下面是我的代码: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
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循环。。再次感谢你,伙计。。