2016-07-26 75 views
-1
public class BeerSong { 
    public static void main(String[] args) { 
     int beerNum = 99; 
     String word = "bottles"; 
     while (beerNum > 0) { 
      System.out.println(beerNum + " " + word + " of beer on the wall"); 
      System.out.println(beerNum + " " + word + " of beer."); 
      System.out.println("Take one down."); 
      System.out.println("Pass it around."); 
      beerNum = beerNum - 1; 
      if (beerNum == 1) { 
       word = "bottle"; // singular, as in ONE bottle. 
      } 
      if (beerNum > 0) { 
       System.out.println(beerNum + " " + word + " of beer on the wall"); 
      } else { 
       System.out.println("No more bottles of beer on the wall"); 
      } // end else 
     } // end while loop 
    } // end main method 
} // end class 

这段代码打印出:如果while循环中

99 bottles of beer on the wall 
99 bottles of beer on the wall. 
99 bottles of beer. 
Take one down and pass it around. 

为什么不将其打印这样的:

99 bottles of beer on the wall 
99 bottles of beer.  
Take one down and pass it around, 99 bottles of beer on the wall.  

由于if语句是在循环后

+0

“这段代码打印出:”不,不。它会打印出'放下'和'将它们放在一起',不带''和'',并且使用不同的大小写和标点符号。 –

+0

循环后面的'if'语句_isn't_。它在循环内部。 – khelwood

+0

你的代码有什么问题?这看起来是正确的,尽管它不像你想要的那样打印,正如Andy Turner已经指出的那样。改变你的第三和第四个打印语句('System.out.println(“Take one down。”);''和'System.out.println(“Pass it around。”);')to'System.out.print “拿下一个并传递给它,”);'你应该几乎完成。 – Thomas

回答

0

这种情况是什么打破代码:

if (beerNum > 0) { 
     System.out.println(beerNum + " " + word + " of beer on the  wall"); 
} else { 
     System.out.println("No more bottles of beer on the wall"); 
} // end else 

你签瓶和打印,如果数字是不为零......

你应该替换逻辑是这样的:

if (beerNum == 0) { 
    System.out.println(beerNum + " " + word + " of beer on the wall"); 
} 

之后,这首歌曲将被打得不错:)

最终的代码可能看起来像:

public static void main(String[] args) { 
int beerNum = 99; 
String word = "bottles"; 
while (beerNum > 0) { 
    System.out.println(beerNum + " " + word + " of beer on the wall"); 
    System.out.println(beerNum + " " + word + " of beer."); 
    System.out.println("Take one down."); 
    System.out.println("Pass it around."); 
    beerNum = beerNum - 1; 
    if (beerNum == 1) { 
    word = "bottle"; // singular, as in ONE bottle. 
    } else if (beerNum == 0) { 
    word = "bottles"; 
    System.out.println(beerNum + " " + word + " of beer on the wall"); 
    } 
} 
} 
+0

如果没有啤酒,你可以在墙上写'0瓶啤酒',这是如何改善的? –

+0

这种情况似乎是正确的。如果'beerNum'是0(即它不大于0 - else分支),他想打印“没有更多瓶啤酒在墙上”。你的修复会打破。 – Thomas

+0

谢谢,一个noobie错误哈哈 – user6640454