java基于for、while循环经典案例题(仅供参考)

输出100到1000的水仙花数(水仙花数是每个各位立方和等于这个数本身)

/*输出100到1000的水仙花数
(水仙花数是每个各位立方和等于这个数本身)*/
public static void main(String[] args){
		 for(int i=100;i <1000;i++){
			int ge = i%10;//求个位
			int shi = i/10%10;//求十位数
			int bai = i/100;//求百位数
			if(ge*ge*ge+shi*shi*shi+bai*bai*bai == i){
				System.out.println(i);
			}
		} 
	}

打印所有的字母

public static void main(String[] args) {
        for (char big = 'A', small = 'a'; big <= 'Z' && small <= 'z'; big++, small++) {
            System.out.print(big + " "+small+ " ");
        }
    }

计算从2000年到3000年之间的所有闰年

public static void main(String[] args){
		 for(int i = 2000;i <= 3000; i++){
			 if(i%400==0 ||(i%4==0 && i%100!=0)){
				System.out.print(i + " ");
			} 
		} 
	}

一张纸厚为0.01毫米,该纸对折30次后是多厚?反过来,一张纸对折多少次会超过1?

/*一张纸厚为0.01毫米,该纸对折30次后是多厚?反过来,一张纸对折多少次会超过1?*/
public static void main(String[] args){
		double a4 = 0.01;
		for(int i =1; i<=30;i++){
			a4*=2;
		} 
		System.out.println(a4);
		double b4 = 0.01;
		int count = 0;
		while(true){
			double a= b4*=2;
			count++;
			if(a>1){
				break;
			}
		}
		System.out.println(count);
	}

求数组的所有奇数的平均值{329,482,-385,32,533,8,5,22,53}

public static void main(String[] args){
		int count = 0;
		double avg = 0;
		int sum =0;
		int[] arr = {329,482,-385,32,533,8,5,22,53};
		for(int i = 0;i< arr.length;i++){
			if(arr[i]%2 !=0){
				count++;
				sum += arr[i]; 
			}
		}
		avg = sum / count;
		System.out.println(avg);
}

将数组中的0去掉剩余元素存入新数组当中{1,2,0,0,0,0,5,0,4,68,3,0,0,9,1}

public static void main(String[] args) {
        /*将数组中的0去掉剩余元素存入新数组当中
        {1,2,0,0,0,0,5,0,4,68,3,0,0,9,1}*/
        //定义一个数组将数据存入到数组中
        int[] arr = {1,2,0,0,0,0,5,0,4,68,3,0,0,9,1};
        //定义一个count来确认arr数组中不为0的数组的个数来指定新数组的长度
        int count = 0;
        //遍历arr数组
        for(int i = 0;i <arr.length;i++){
            if(arr[i]!=0){
                count++;
            }
        }
        //创建一个索引值每循环一次自加一次
        int index = 0;
        //创建新数组
        int[] arr2 = new int[count];
        //遍历arr数组将不为0的元素存储到新数组arr2中
        for (int i = 0; i < arr.length; i++) {
            if(arr[i]!=0){
                arr2[index] = arr[i];
                index++;
            }
        }
        //遍历新数组数组并打印
        for (int i = 0; i < arr2.length; i++) {
            System.out.println("新数组内存储的元素为:"+arr2[i] +"   "+ "数组索引下标:"+i);
        }
    }

小明有100元钱,要去买100只鸡,公鸡5元一只,母鸡3元一只,小鸡1元一只,问公鸡,母鸡,小鸡有多少种买法,各买多少只?

 public static void main(String[] args) {
        /**
         小明有100元钱,要去买100只鸡,公鸡5元一只,母鸡3元一只,
         小鸡1元一只,问公鸡,母鸡,小鸡有多少种买法,各买多少只?
         */
        int gj;
        int mj;
        int xj;
        int count3 = 0;
        for (gj = 0; gj <= 20; gj++) {//购买的公鸡数量最多不可超多20只
            for (mj = 0; mj <= 33; mj++) {//购买的母鸡数量最多不可超多30只
                for (xj = 0; xj <= 100; xj++) {//购买的小鸡数量最多不可超多100只
                    //假设公鸡和母鸡和小鸡数量不可为0  需打开注释判断
                    //if(gj!=0 && mj!=0 && xj!=0) {
                        if ((gj * 5 + mj * 3 + xj * 1 == 100)) {
                            count3++;
                            System.out.println("公鸡:" + gj + "只,母鸡:" + mj + "只,小鸡:" + xj + "只");
                        }
                    //}
                }
            }
            System.out.println();
        }
        System.out.print("共有:" + count3 + "种买法");
    }

有一个瓜农他有1024个西瓜,第一天卖掉总数的一半后又多卖出两个,以后每天卖剩下的一半多两个,问几天以后能你卖完?

 public static void main(String[] args) {
        /**
         有一个瓜农他有1024个西瓜,第一天卖掉总数的一半后又多卖出两个,
         以后每天卖剩下的一半多两个,问几天以后能你卖完
         */
        int sum = 1024;
        int count=0;
        while(true) {
            if(sum !=0) {
                sum = sum/2-2;//每天剩余的西瓜数量
                count++;//记录天数
            }else {
                break;
            }
        }
        System.out.println(count);
    }

鸡兔同笼。鸡兔一共有50只,脚一共有160只,问鸡和兔各多少只?要求鸡兔至少一样一只。

 public static void main(String[] args) {
        /**
         * 鸡兔同笼。
         * 		鸡兔一共有50只,脚一共有160只,问鸡和兔各多少只?
         * 		要求鸡兔至少一样一只。
         */
        // 假设鸡为i 兔为j
        int j = 0;//假设初始兔的数量为0
        for (int i = 0; i <=50; i++) {
            j = 50-i;//那么鸡的数量就是总数减去兔的数量
            if(i*2 + j*4 == 160) {//假设如果鸡的数量*脚数+兔的数量*兔的脚数
                System.out.print("鸡有:"+i+"只" + "\t"+"兔有:"+j+"只");
            }
        }
    }

有个人想知道,一年之内一对兔子能繁殖多少对?于是就筑了一道围墙把一对兔子关在里面。已知一对兔子每个月可以生一对小兔子, 而一对兔子从出生后第3个月起每月生一对小兔子。假如一年内没有发生死亡现象,那么,一对兔子一年内(12个月)能繁殖成多少对?

/**
         有个人想知道,一年之内一对兔子能繁殖多少对?于是就筑了一道围墙把一对兔子关在里面。
         已知一对兔子每个月可以生一对小兔子,而一对兔子从出生后第3个月起每月生一对小兔子。
         假如一年内没有发生死亡现象,那么,一对兔子一年内(12个月)能繁殖成多少对?
         */
        //兔子的繁殖规律为    1 1 2 3 5 8 13 21 34 55 .......
        // 斐波那契数列  第三个数开始,后面的数值永远等于前两个数值的和
        //             把第二个值赋值给第一个值,把第三个值赋值给第二个值
        int f1 = 1;//第一个月兔子为一对
        int f2 = 1;//第二个月兔子为一对
        int sum3 = 0;//用于记录从三月起每个月的兔子对数
        for(int i= 3;i <= 12;i++){
            sum3 = f1 + f2;//第三个月=第一个月+第二个月
            f1 = f2;
            f2 = sum3;
        }
        System.out.println("一年之内生了"+sum3+"对小兔子");
    }

求300~400之间的所有素数,以及所有素数的和

 public static void main(String[] args) {
        //求300~400之间的所有素数,以及所有素数的和  素数就是质数
        // 质数:这个数只能被1或者是它本身整除的数  1不是质数 2 3 4 5
        // 统计下有多少个素数
        int count = 0;
        // 定义所有素数的和
        int sum = 0;
        // 开关技术
        for (int i = 300; i <= 400; i++) {// i是否为素数
            boolean flag = false;// false代表不是质数  true就是质数
            // 整除判断能否被除尽  303 / 3 = 101
            for (int j = 2; j < i / 2; j++) {
                // 整除判断
                if (i % j == 0) {
                    flag = false;
                    break;// 跳出循环
                } else {
                    flag = true;//
                }
            }
            // 判断flag 标记
            if (flag == true) {
                System.out.println(i);
                count++;// 素数次数累加
                sum += i;// 素数和累加
            }
        }
        // 输出所有的素数和
        System.out.println("300~400之间的所有素数和为:" + sum);
    }

如果一个数等于其他因子之和,我们称这个数为完数。编程打印出1000以内所有的完数。

//如果一个数等于其他因子之和,我们称这个数为完数。编译打印1000以内的所有完数
        //完数  6 = 1+ 2 + 3
        /*
        *  数值 % i==0 就表示i是该数值的因子  从1开始,(最大值为数值的一半)因子不能为这个数的本身
        *  sum +=i
        *  判断条件 sum == i---->表明该数值是完数
        * */
        for (int j = 1; j <=1000 ; j++) {
            //定义一个因子累加和
            int sum = 0;
            //判断因子
            for (int i = 1; i < j; i++) {
                //判断是否能整除
                if(j % i == 0){
                    sum+=i;
                }
            }
            //判断sum和j的关系
            if(sum==j){
                System.out.println(j);
            }
        }

你可能感兴趣的:(java,java)