JAVA基础必备(四)——循环体(二)

循环体的实际使用实例:

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);
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值