目录
- Java编程练习题
- 猜数字游戏
- 根据年龄,来打印出当前年龄的人是少年(低于18),青年(19-28),中年(29-55),老年(56以上)
- 判断一个数字是否为素数
- 输出1-100之间所有素数
- 输出1000-2000之间所有闰年
- 输出乘法口诀表
- 求两个正整数的最大公约数
- 求0-999之间的水仙花数
- 写一个函数返回参数二进制中1的个数
- 获取一个数二进制序列中所有偶数位和奇数位,分别输出二进制序列
- 计算分数的值1/1-1/2+1/3-1/4+....-1/100
- 打印X图形
- 输出一个整数的每一位
- 模拟登录 编写代码模拟三次密码输入的场景。 最多能输入三次密码,密码正确,提示“登录成功”,密码错误, 可以重新输 入,最多输入三次。三次均错,则提示退出程序
Java编程练习题
猜数字游戏
Random random = new Random();
int num = random.nextInt(100);//随机生成一个[0,100)的数字
//再进行判断,直到猜对
Scanner scanner = new Scanner(System.in);
while (scanner.hasNextInt()) {
int temp = scanner.nextInt();
if (temp == num) {
System.out.println("恭喜您,猜对了!!");
} else if (temp > num) {
System.out.println("抱歉,猜大了");
} else {
System.out.println("猜小了");
}
}
根据年龄,来打印出当前年龄的人是少年(低于18),青年(19-28),中年(29-55),老年(56以上)
Scanner scanner = new Scanner(System.in);
while (scanner.hasNextInt()) {
int age = scanner.nextInt();
if (age < 18 || age == 18) {
System.out.println("少年");
} else if ((age > 19 || age == 19) && (age < 28 || age == 28)) {
System.out.println("青年");
} else if ((age > 29 || age == 29) && (age < 55 || age == 55)) {
System.out.println("中年");
} else {
System.out.println("老年");
}
}
判断一个数字是否为素数
//素数概念,除了一和自身不能被其他数整除
Scanner scanner = new Scanner(System.in);
while (scanner.hasNextInt()) {
int num = scanner.nextInt();
int count = 0;
for (int i = 2; i < num; i++) {
if (num % i == 0) {
count = 1;
break;
}
}
if (count == 0){
System.out.println("是素数");
}else {
System.out.println("不是素数");
}
}
输出1-100之间所有素数
int count = 100;
while (count > 0) {
int temp = 0;
for (int i = 2; i < count; i++) {
if (count % i == 0) {
temp = 1;
break;
}
}
if (temp == 0) {
System.out.print(count + "\t");
count--;
}else {
count--;
}
}
输出1000-2000之间所有闰年
//1.能被4整除,但不能被100整除,就是闰年;
// 2.能被400整除,也是闰年
int count = 0;
for (int year = 1000; year < 2001; year++) {
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
System.out.print(year + "\t");
count++;
}else {
continue;
}
}
System.out.println(count);
输出乘法口诀表
for (int i = 1; i < 10; i++) {
for (int j = 1; j < i + 1; j++) {
System.out.printf("%d*%d=%d\t",j,i,i*j);
}
System.out.println();
}
求两个正整数的最大公约数
//这里采用辗转相除法
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
int a = scanner.nextInt();
int b = scanner.nextInt();
while (true) {
if (a % b == 0) {
System.out.println(b + "是最大公约数");
break;
} else {
int c = a % b;
a = b;
b = c;
}
}
}
求0-999之间的水仙花数
for (int i = 1; i < 1000; i++) {
//判断位数,水仙花是三位的
if ((i / 100) > 0) {
int bit = i % 100 % 10;
int tenBit = i % 100 / 10;
int hundred = i / 100;
if ((bit * bit * bit) + (tenBit * tenBit * tenBit) + (hundred * hundred * hundred) == i) {
System.out.print(i + "\t");
}
} else {
continue;
}
}
写一个函数返回参数二进制中1的个数
这个的做法我们可以是让想求的数&这个数减一直到最后结果为0,进行了几次&,则就有几个1
int num = 18;
int count = 0;
while (num != 0) {
count++;
num = num & (num - 1);
}
System.out.println(count);
获取一个数二进制序列中所有偶数位和奇数位,分别输出二进制序列
这个代码为什么这么写呢?我在这大概讲述一下,int为32位,但我们不拿这么多来说,我们以四位来说,比方说num=7,二进制也就是0111,我们想求奇数列或者偶数列,从左边开始也可以,从右边开始算也可以。
0111,我们可以无符号右移3位,然后得到0000,注意最后一个0是0111中的,前三个0是右移后添的。移完后我们在与1按位与,得到结果为0,那我们就知道了第一位为0,再求第二位,我们右移两位,再按位与1…这个代码核心就是这样哦!!!
int num = 7;
for (int i = 31; i > 0; i -= 2) {
int temp = num;
int number = (temp >>> i) & 1;
System.out.print(number + "\t");
}
System.out.println();
for (int j = 30; j > 0 || j == 0; j -= 2) {
int temp = num;
int number = (temp >>> j) & 1;
System.out.print(number + "\t");
}
}
别忘了j==0的时候,没有移动的时候为第一位。
计算分数的值1/1-1/2+1/3-1/4+…-1/100
double sum = 0;
double a = 0;
double b = 0;
for (int i = 1; i < 100; i += 2) {
a += 1.0/i;
}
for (int j = 2; j < 101; j += 2) {
b += 1.0/j;
}
sum = a - b;
System.out.println(sum);
打印X图形
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextInt()) { // 注意 while 处理多个 case
int num = in.nextInt();
for(int i = 1; i < num + 1; i++) {
for(int j = 1; j < num + 1; j++) {
if((i == j) || (i + j == num + 1)) {
System.out.print("*");
}else {
System.out.print(" ");
}
}
System.out.println();
}
}
输出一个整数的每一位
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
//在这我假设的是最多只允许输入三位情况
int num = scanner.nextInt();
if (num /100 > 0) {
//三位
int bit = num % 100 % 10;
int tenBit = num % 100 / 10;
int hundred = num / 100;
System.out.print(bit + "\t" + tenBit + "\t" + hundred);
System.out.println();
} else if (num / 10 > 0) {
//两位
int bit = num % 10;
int tenBit = num / 10;
System.out.print(bit + "\t" + tenBit);
System.out.println();
}else {
//个位
System.out.print(num);
System.out.println();
}
}
模拟登录 编写代码模拟三次密码输入的场景。 最多能输入三次密码,密码正确,提示“登录成功”,密码错误, 可以重新输 入,最多输入三次。三次均错,则提示退出程序
Scanner scanner = new Scanner(System.in);
int count = 3;
String password = "hello";
while (count > 0) {
String password1 = scanner.nextLine();
if (password1.equals(password)) {
System.out.println("登录成功");
break;
} else {
count --;
}
}
if (count == 0) {
System.out.print("抱歉,您三次密码均输错,程序将关闭");
}