package hello;
import java.util.Scanner;
public class Hello {
public static void main(String[] args)
{
//凑硬币,使用1元,2元,5元,10元,20元,50元的硬币凑出的金额,使用枚举法
Scanner in = new Scanner (System.in);
int amount=in.nextInt();
for(int one=0;one<=amount;++one) {
for(int five=0;five<=amount/5;++five) {
for(int ten=0;ten<=amount/10;++ten) {
for(int twenty=0;twenty<=amount/20;++twenty) {
for(int fifty=0;fifty<=amount/50;++fifty) {
if(one+five*5+ten*10+twenty*20+fifty*50==amount) {
System.out.println(one+"张1元+"+five+"张5元+"+ten+"张10元+"+twenty+"张20元+"+fifty+"张50元"+"="+amount+"元");
}
}
}
}
}
}
in.close();
}
}
运行结果:
在这种代码情况下,会枚举出所有的情况
若只需一种情况,则使用标签 label 跳出循环,而break和continue只会跳出一个循环
label则会跳出所有的循环
如下代码:
package hello;
import java.util.Scanner;
public class Hello {
public static void main(String[] args)
{
//凑硬币,使用1元,2元,5元,10元,20元,50元的硬币凑出的金额,使用枚举法
Scanner in = new Scanner (System.in);
int amount=in.nextInt();
OUT:
for(int one=0;one<=amount;++one) {
for(int five=0;five<=amount/5;++five) {
for(int ten=0;ten<=amount/10;++ten) {
for(int twenty=0;twenty<=amount/20;++twenty) {
for(int fifty=0;fifty<=amount/50;++fifty) {
if(one+five*5+ten*10+twenty*20+fifty*50==amount) {
System.out.println(one+"张1元+"+five+"张5元+"+ten+"张10元+"+twenty+"张20元+"+fifty+"张50元"+"="+amount+"元");
break OUT;
}
}
}
}
}
}
in.close();
}
}
在第一个循环前加上一个标签 OUT ,在要跳出的循环里写出 break OUT;写完后,循环从最里面的循环中开始跳出,跳到最外层,只输出一种结果。