今天学的基础————关于循环知识
//找出三位数当中所有的水仙花数
final short UNIT = 10;//降位处理
short num = 100,ones,tens,hundreds,copy,sum;
while (num<1000){
copy = num;
ones = (short)(copy%UNIT);//%返回值是int类型
copy /=UNIT;
tens = (short)(copy%UNIT);
copy /=UNIT;
hundreds = copy;
sum =(short) (Math.pow(ones,3)+Math.pow(tens,3)+Math.pow(hundreds,3));
if(sum==copy){
System.out.println(sum+"是水仙花数");
}
num++;
}
//根据年月日,计算该日期是该年的第多少天
//问题空间=>解空间
int year = 2020,month = 5,day = 4,total = day,copy = month;
copy--;
while(copy>0){
switch(copy){
case 1: case 3:case 5: case 7:case 8: case 10: case 12:
total +=31;
break;
case 4: case 6:case 9: case 11:
total +=30;
break;
case 2:
total += year%4==0 &&year%100!=0 || year%400==0?29:28;
break;
}
copy--;
}
System.out.println(""+year+"年"+month+"月"+day+"日有"+total+"天");
素数(质数):不能被【除1和自身以外】的其他数【整除】的正整数
int num = 3,count = 2;
boolean isPM = true;
while (count<num){
if(num%count==0){
isPM = false;
}
count++;
}
System.out.println(num+(isPM?"是":"非")+"质数");
求1~100的和
int count = 1,sum = 0;
while(count<=100){
sum = count + sum;
count++;
}
System.out.println("1~100的和为"+sum);
//高斯求法
int sum =0,i = 1,j = 100;
while (i<j){
sum += i+j;
i++;
j--;
}
System.out.println("RESULT = "+sum);
求1~100之间能被3或者7整除的整数之和
int sum =0,i = 1;
while(i<=100){
if(i%3!=0&&i%7!=0){
i++;
continue;
}
sum += i;
i++;
}
System.out.println(sum);
猜随机数:给定一个随机数的范围,循环控制台重复输入数值,告知大了,小了(继续循环),中了(终止循环break)
Random rand = new Random();
final int num = rand.nextInt(99);
Scanner input = new Scanner(System.in);
System.out.println(" 请输入1~100之间的整数");
int i = input.nextInt(),max=100,min=1;
while(true){
if(i==num){
System.out.println("恭喜你猜对了这个数是"+i);
break;
}
if(i>num){
max = i;
System.out.println("请输入"+min+"到"+max+"之间的正整数");
i = input.nextInt();
continue;
}
if (i<num){
min = i;
System.out.println("请输入"+min+"到"+max+"之间的正整数");
i = input.nextInt();
continue;
}
}
猜拳游戏:1、锤>2、剪>3、布,随机数生成拳号代表一方,控制到输入拳号表示另一方,请制定判定规则,判定输赢,并完成5局3胜的赛制
Random rand = new Random();
int a_win_times =0,b_win_times=0;
Scanner input = new Scanner(System.in);
while(a_win_times!=3 && b_win_times!=3){
System.out.println("请输入1,2,3中其中的数字,其中1、锤2、布3、剪");
int b =input.nextInt();
int a =1+rand.nextInt(3);
if(a==b){
System.out.println("平局");
continue;
}
if((a==3&&b==2)||(a==2&&b==1)||(a==1&&b==3)){
a_win_times++;
System.out.println("电脑赢");
continue;
}
if((a==1&&b==2)||(a==2&&b==3)||(a==3&&b==1)) {
b_win_times++;
System.out.println("我赢");
}
}
if(a_win_times==3){
System.out.println("电脑胜");
}else
System.out.println("我胜");
循环录入10个人的成绩,求平均成绩(去掉一个最高成绩和一个最低成绩),并倒序输出前三名的成绩
double max=0,mid=0,min=0,cur=0,sum = 0,aver;
int count = 0;
while(count<10){
count++;
Scanner input = new Scanner(System.in);
System.out.println("输入其中一个成绩");
double i = input.nextDouble();
sum += i;
if(max<i){
cur = min;
min = mid;
mid = max;
max = i;
continue;
}
if(mid<i){
cur = min;
min = mid;
mid = i;
continue;
}
if(min<i){
cur = min;
min = i;
continue;
}
if(cur<i){
cur= i;
}
}
System.out.println("min="+min+"mid="+mid+"max="+max);
aver = (sum-max)/8;
System.out.println("平均分为"+aver);
//以下方法是种遍历尝试
Scanner input = new Scanner(System.in);
double sum = 0;double top1,top2,top3,top4,temp;
int count =0;
top1 = input.nextDouble();
top2 = input.nextDouble();
top3 = input.nextDouble();
if(top1<top2){
sum = sum +top1 +top2;
temp =top1;
top1 =top2;
top2 =temp;
}else{
sum =sum +top1 +top2;
}
if(top2<top3){
sum = sum + top3;
temp= top2;
top2= top3;
top3= temp;
}else{
sum =sum + top3;
}
while(count<7){
count++;
System.out.println("请输入下一个成绩");
top4 = input.nextDouble();
sum = sum +top4;
if(top3<top4){
temp=top3;
top3=top4;
if(top2<top3){
temp=top2;
top2=top3;
top3=temp;
if(top1<top2){
temp=top1;
top1=top2;
top2=temp;
}
}
}
}
System.out.println("总分为"+sum);
System.out.println("第三名"+top3+"第二名"+top2+"第一名"+top1);
一对兔子圈起来,已知一对兔子每个月生一对小兔子,而小兔子出生后三个月起每月生一对兔子,问一年后有多少对兔子
int a =1,b =1,count =0;
for(int c;count<10;count++) {
c = a + b;
System.out.println(c);
a = b;
b = c;
}
请输出前20个斐波那契数列值,如:1,1,2,3,5,8,13…
int a =1,b =1,count =0;
System.out.println(a);
System.out.println(b);
for(int c;count<18;count++){
c = a +b;
System.out.println(c);
a = b;
b = c;
}