为了让你热身,让我们试着让一个算法工作。
写一个程序输出“墙上九十九瓶啤酒”的歌词。你的程序应该用英语打印瓶子的数字,而不是数字。例如
墙上挂着九十九瓶啤酒。
…
墙上有一瓶啤酒。
一瓶啤酒,
取下一个,传给别人,
墙上没有一瓶啤酒。
您的程序不能只有99条OUTPUT语句。
char[] numbers = {'十', '一','二','三','四','五','六','七','八','九'};
void printBeers(int number) {
for(int i = number; i >= 0; i--) {
String chineseNum = getZNNumber(i);
System.out.println("墙上挂着"+ chineseNum +"瓶啤酒\n" + chineseNum + "瓶啤酒\n" +
"取下一个,传给别人");
System.out.println();
if(i == 1) {
System.out.println("墙上没有一瓶啤酒");
break;
}
}
}
String getZNNumber(int arab) {
StringBuilder number = new StringBuilder();
if(arab < 2) number.append(numbers[arab]);
int bit = 1, num = arab;
while (num > 1) {
if(bit >= 10 && arab % 10 != 0) {
number.insert(0, '十');
}
number.insert(0, numbers[num % 10]);
num /= 10;
bit *= 10;
}
return number.toString();
}
是这个意思吗?有用请采纳。
class test {
public static void main(String[] args) {
int i;
for (i=99;i>0;i--) {
System.out.println("墙上挂着"+i+"瓶啤酒");
System.out.println("取下一个,传给别人。");
if(i==1) {
System.out.println("墙上没有一瓶啤酒");
}
}
}
}
我也围观一下
做个对照表吧,1-19每个单词对应,20.30..90在做个对照,然后就这样吧——谁有更好的方法?