while 循环练习题(逆序/阶乘/分解质因数/乘法表)

一些简单的基础练习,过程可能不是最简单最全面的,欢迎大佬评论改进。
!!!上题目!!!

  1. 编写程序 ,计算用户输入数据的立方(和while无关,先来个基础练习)
//Java程序本身是没有直接使用Scanner的能力,导包操作
  
import java.util.Scanner;

class exercise {
	public static void main(String[] args) {
		
		System.out.println("请输入一个整数 :");

		//需要得到一个Scanner的变量
		Scanner sc = new Scanner(System.in);
		int num = 0//需要得到一个Scanner的
		int num = sc.nextInt();

		//上述操作可简写为  int num = new Scanner(System.in).nextInt();

		int cube = num * num * num;
		
		System.out.println("立方为 :" + cube);
	}
}
  1. 输入一个月数,然后输出对应月份有多少天(不考虑闰年),将天数输出,注意输入
    使用Scanner输入。
//导包操作
import java.util.Scanner;

class exercise {
	public static void main(String[] args) {
		//提示用户输入
		System.out.println("请输入一个月份 :");
		
		//获取用户输入的数据
		Scanner sc = new Scanner(System.in);
		int mouth = sc.nextInt();
		
		//月份不能为0
		while (mouth > 0) {
			//如果月份为1,3,5,7,8,10,12则显示31天
			if (mouth == 1 || mouth == 3 || mouth == 5 || 
				mouth == 7 || mouth == 8 || mouth == 10 ||
				mouth == 12) {
				System.out.println(mouth + "月有31天");
				break;
			//如果月份为4,6,9,10则为30天
			} else if (mouth == 4 || mouth == 6 || mouth == 9 || mouth == 10) {
				System.out.println(mouth + "月有30天");
				break;
			} else if (mouth == 2) {
				System.out.println("这个月28天");
				break;
			}else {
				System.out.println("输入有误");
				break;
			}
			
		}
	}
}

个人觉得在 if 判断时代码过于繁琐,不知道怎么改进,大神请留言。

  1. while 完成9*9 乘法表
class exercise {
	public static void main(String[] args) {
		int i = 1;
		//外层循环控制行数,循环条件 1~9 
		while (i <= 9) {
			int j = 1;
			//内层循环 表达式个数等于行数
			while (j <= i) {
				System.out.print(i + "*" + j + "=" + i*j);
			    j += 1;
			}
			i += 1;
			System.out.println();
		}
	}
}
  1. 将一个正整数进行分解质因数操作 ( 输入:8 输出:2 * 2 * 2)
import java.util.Scanner;

class exercise {
	public static void main(String[] args) {
		System.out.println("请输入一个整数 :");
		Scanner sc = new Scanner(System.in);
	
		int i = sc.nextInt();
		//分解质因数是从2开始除的,所以初始值为2
		int j = 2;
		
	/*
	假设i == 8,带入2 <= 8条件满足,往下运行,8 % 2 余数为0并且2 !=8 ,输出一个 2 * ,i = 8 / 2   ==4,然后在返回判断,这是j == 2,i == 4,满足添加继续执行,输出2 * ,i = 4 / 2 == 2,回去判定不满足条件,跳出第二个while循环往下运行if,满足条件推出循环并且输出 i,此时i为2.加上之前的输出项,最后结果为2 * 2 * 2
	*/
		while (j <= i) {
			while (i % j == 0 && j != i) {
				System.out.print(j + "*");
				i /= j;
				
			}
			if (i == j) {
				break;
			}
			j += 1;
		}
	System.out.println(i);
	}  
}
  1. 利用循环完成15的阶乘
class exercise {
	public static void main(String[] args) {
		int i = 1;
		int j = 1;
		while (i <= 15) {
			j *= i;
			System.out.println(j);
			
			i += 1;}
	}
}

我这个程序最后输出是每一次相乘的结果,我想之输出最后的结果,大神门有没有办法!!

  1. 逆序数值( 输入:123456 输出:654321)
在这里插import java.util.Scanner;
class exercise {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int i = sc.nextInt();
		int j = 0;
		 while (i != 0) {
		 	//获取个位数
			 j = i % 10;
			 //将获取的个位数输出
			 System.out.print(j);
			 //去掉获取的个位数
			 i = i / 10;
		 }
	}
}

@@今日份学习结束,期待天的到来@@

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值