循环体的实际使用实例:
1.实例1:输入一个数,因式分解
如输入90 得到90=2*3*3*5
80 得到80=2*2*2*2*5
分析:因式分解,都是以2开始除,无余数
public class test1 {
public test1(){}
public void getFenJie(int num){
for(int i=2;i<num/2;i++){
if(num%i==0){
System.out.print(i+"*");
num = num/i;
i=1;//若输入90时,i=1的时候进入循环++又从i=2开始,那么这时num=45,num%2条件不执行,i此时为2继续++开始,i为3然后45%3==0条件执行。
}
}
System.out.print(num);
}
}
2.实例2:求水仙花数。所谓水仙花数,
是指一个三位数abc,如果满足a3+b3+c3=abc,
(a的3次方)则abc 是水仙花数,打印所有水仙花数
public class Test2 {
public Test2(){}
public void getShuiXianNum(int num){
//输入一个数,则计算出这个数的百分数,十分数,个位数,三位数则是100-1000之间的数,所以做循环,如果是输入的数的话那么就直接判断即可
if(num<100){
System.out.println("您输入的数字不符合水仙花数的要求!");
}else if(num>=100){
int g = num%10; //个位
int s = num/10%10; //十位
int b = num/100; //百位
if( g*g*g + s*s*s + b*b*b == num){
System.out.println("您输入的"+num+"是水仙花数");
}else System.out.println("您输入的"+num+"不是水仙花数");
}
}
}
3.实例3:如果一个数等于其所有因子之和,
我们就称这个数为"完数",例如 6 的因子为
1,2,3 6=1+2+3 6 就是一个完数.
请编程打印出1000 以内所有的完数
public void getAllNum(){
for(int i=0;i<=1000;i++){
int n = 0;
// 求出这个数的因子,设这个数的因子为n
for(int j=1;j<=i/2;j++){
if(i%j==0){
n += j;
}
}
if(i==n){
System.out.println(i);
}
}
}
4.实例4:打渔还是晒网
中国有句老话叫“三天打渔,两天晒网”。
假设有一个人从2000 年1 月1 日开始“三天
打渔两天晒网”,读入三个整数,分别表示年份、
月份、日期,问这三个整数所表示的那天
这个人在打渔还是在晒网?
求一个日期和2000年1月1日相差多少天
Scanner s = new Scanner(System.in);
System.out.println("请输入年份:");
int y = s.nextInt();
System.out.println("请输入月份:");
int m = s.nextInt();
System.out.println("请输入日期:");
int d = s.nextInt();
/*求这个日期在这一年已经过的天数*/
int sum = 0;
switch (m - 1)
{
case 11:
sum+=30;
case 10:
sum+=31;
case 9:
sum+=30;
case 8:
sum+=31;
case 7:
sum+=31;
case 6:
sum+=30;
case 5:
sum+=31;
case 4:
sum+=30;
case 3:
sum+=31;
case 2:
if(y%4==0&&y%100!=0||y%400==0)
sum+=29;
else
sum+=28;
case 1:
sum+=31;
}
sum += d;
int sub = 0;//相差的天数
if(y==2000)
{
sub = sum - 1;
}else if(y>2000)
{
/*i代表了中间相隔的年份*/
for(int i = 2001;i < y;i++)
{
if(i%4==0&&i%100!=0||i%400==0)
sub += 366;
else
sub += 365;
}
sub = sub + sum + 365;
}else{
System.out.println("输入有误!");
return;
}
//System.out.println("相差的天数是:"+sub);
if(sub%5==3||sub%5==4)
{
System.out.println("晒网");
}else{
System.out.println("打渔");
}
}
5.实例5:faibonacci(费波那契)数列的前几个数分别为0,1,1,2,3,5,……。
从第3 项开始,每一项都等于前两项的和。
读入一个整数n,编程求出此数列的前n 项的和。
注意:这里的数列是从0 开始的。
0 1 1 2 3 5 8 13 ....
Scanner s = new Scanner(System.in);
System.out.println("请输入项数:");
int n = s.nextInt();
int last = 1;//表式上一项
int pre = 0;//表示上一项的前一项
int sum = last+pre;
for(int i = 3;i <= n ;i++)
{
int now = last + pre;//得到当前项
System.out.print(now+",");
sum += now;//累计和
pre = last;//上一项变成上一项的前一项
last = now;//当前项变为上一项
}
System.out.println();
System.out.println(sum);
}