生日蜡烛
某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。
现在算起来,他一共吹熄了236根蜡烛。
请问,他从多少岁开始过生日party的?
请填写他开始过生日party的年龄数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
*暴力循环列举
public class 生日蜡烛
{
public static void main(String[] args){
int n=0;
int i;
flag://设置标记,方便之后跳出双层循环
for (i =1; i <100; i++) {
n=0;
for(int j=i;j<100;j++) {
n=n+j;
if(n==236) {
break flag;//跳到flag标记处,即双层循环外面
}
if(n>236) {
break;
}
}
}
System.out.println(i);
}
}
****此处用了跳出双层循环的方法,总结如下:
①使用类似C语言中的GOTO。直接跳出两个for循环,到flag.
又比如:
public static void main(String[] args) { OK://跳出的标记 for (int i = 0; i < 5; i++) { System.out.println(i+"这是I"); for (int j = 0; j < 5; j++) { System.out.println(j+"这是J"); if(j==3){ //执行条件为TURE 则跳到标记处结束循环 break OK; } for (int k = 0; k < 5; k++) { System.out.println(k+"输出K"); } } } }
②增加标记(使用判断的方法加条件)
例如:
boolean b = true;
for(int i = 0; i < 10 && b; i++){
for(int j = 0; j < 10 && b;j++){
if(j > 3){
System.out.println("i="+i);
System.out.println("j="+j);
b = false;
}
}
}
或者:
int array[][] = { { 5, 7, 6, 4, 9 }, { 1, 2, 8, 3, 2 } };
boolean flag = false;
for (int i = 0; i < array.length && !flag; i++) { //当flag为true时跳出循环
for (int j = 0; j < array[i].length; j++) {
if (array[i][j] == 8) {
flag = true;
break;
}
}
}
③当然,如果函数不需要返回值,比如这个题,就可以用return,只要在return之前把值输出到屏幕就可以。
public class 生日蜡烛
{
public static void main(String[] args){
int n=0;
int i;
for (i =1; i <100; i++) {
n=0;
for(int j=i;j<100;j++) {
n=n+j;
if(n==236) {
System.out.println(i);
return;
}
if(n>236) {
break;
}
}
}
}
}