Java流程控制练习

📋 个人简介
💖 作者简介:大家好,我是W_chuanqi,一个编程爱好者
📙 个人主页:W_chaunqi
😀 支持我:点赞👍+收藏⭐️+留言📝
💬 愿你我共勉:“没有什么比勇气更温文尔雅,没有什么比怯懦更冷酷无情!”✨✨✨

Java流程控制练习

1.划分成绩等级

✡题目要求

将一、二年级学生的学生成绩划分等级,等级划分标准如下:

  • “优秀”,大于等于 90 分。
  • “良好”,大于等于 8 分,小平 90 分。
  • “合格”,大于等于 60 分,小于 80 分。
  • “不合格”,小于 60分。

使用 if…else if 语句判断成绩等级并输出与该成绩对应的等级。

✡代码实现

import java.util.Scanner;

/**
 * @desc 划分成绩等级
 * @author 007
 * @date 2022/7/20
 */
public class ScoreLevel {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc =new Scanner(System.in);
		System.out.println("请输入你的成绩:");
		int score=sc.nextInt();
		if (score>=90) {
			System.out.println("成绩优秀");
		}else if(score>=80 && score<90) {
			System.out.println("成绩良好");
		}else if(score>=60 && score<80) {
			System.out.println("成绩合格");
		}else if(0<=score && score<60) {
			System.out.println("成绩不合格");
		}else {
			System.out.println("成绩超出范围,请重新输入成绩!!!");
		}
		sc.close();
		
	}

}

✡运行结果

image-20220720173149932


2.判断月份对应的季节

使用 switch 多分支语句判断某个月份属于哪个季节。

代码实现

import java.util.Scanner;

/**
 * @desc 判断某个月份属于哪个季节,switch实现
 * @author 007
 * @date 2022/7/20
 */
public class Seasons {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc =new Scanner(System.in);
		System.out.println("请输入月份:");
		int season=sc.nextInt();
		switch(season) {
		case 3:
		case 4:
		case 5:
			System.out.println("春季");
			break;
		case 6:
		case 7:
		case 8:
			System.out.println("夏季");
			break;
		case 9:
		case 10:
		case 11:
			System.out.println("秋季");
			break;
		case 12:
		case 1:
		case 2:
			System.out.println("冬季");
			break;
		default:
			System.out.println("输入错误!!!");
			break;
		}
		sc.close();
	}

}

✡运行结果

image-20220720204650286


3.细胞分裂实验

✡题目描述

​ 生物实验室做单细胞细菌繁殖实验,每一代细菌数量都会成倍数增长,一代菌落中只有一个细菌,二代菌落中分裂成两个细菌,三代菌落中分裂成 4 个细菌,以此类推,谁计算第十代菌落中的细菌数量。

✡代码实现

//for循环实现
public class SingleCellReproduction {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int n=1;
		for(int i=1;i<10;i++) {
			n=n*2;
		}
		System.out.println("第十代菌落中的细菌数量为:"+n);
	}

}
//while循环实现
public class SingleCellReproduction {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int n=1;
		int i=1;
		while(i<10) {
			n=n*2;
			i++;
		}
		System.out.println("第十代菌落中的细菌数量为:"+n);
	}

}

✡运行结果

image-20220720210126613


4.斐波那契数列

✡题目描述

	1、1、2、3、5、8、13、21、34、…是一组典型的斐波那契数列,前两个数相加等于第三个数。那么请问这组数中的第 n个数的值是多少?

✡代码实现

import java.util.Scanner;

public class Fibonacci {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int i=1,j=1;
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入n的值:");
		int n=sc.nextInt();
		for(int m=2;m<n;m++) {
			int temp=i+j;
			i=j;
			j=temp;
		}
		System.out.println("斐波那契数列的第"+n+"个数为:"+j);
		sc.close();
	}

}

✡运行结果

image-20220720221331488


5.蜗牛爬井

有一口井,深 10 米,一只蜗牛从井底向井口爬,白天向上爬2米,晚上下滑 1 米,问多少天可以爬到井口?

✡代码实现

public class Snail {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int day=2,night=-1;
		int sum=0;
		for(int i=1;i<=10;i++) {
			sum+=day;
			if(sum>=10) {
				System.out.println("第"+i+"天可以爬到井口。");
				break;
			}
			sum+=night;
		}
	}

}

✡运行结果

image-20220720225748236


6.剧院售票

​ 某剧院发售演出门票,演播厅观众席有 4 行,每行有 10 个座位。为了不影响观众视角,在发售门票时,屏蔽掉最左一列和最右一列的座位。请编写程序,结合本节知识点模拟整个售票过程。

✡代码实现

public class SellSeats {
	public static void main(String[] args) {
		System.out.println("剧院可售座位信息:");
		for (int i = 1; i <= 4; i++) {
			for (int j = 1; j <= 10; j++) {
				if (j == 1 || j == 10) {
					continue;
				} else {
					System.out.println("第" + i + "排,第 " + j + "列可售");
				}
			}
		}
	}
}

✡运行结果

image-20220720230609235


7.输出菱形

编写 Java 程序,使用 for 循环打印菱形,效果如下:

image-20220721075520916

✡代码实现

public class Diamond {
	public static void main(String args[]) {
		int lineCount = 17;// 输出的菱形有多少行,请赋值成奇数

		int maxLineNum = (lineCount + 1) / 2;// 菱形最多一行
		for (int i = 1; i <= maxLineNum; i++) {// 循环菱形数量越来越多的几行
			for (int space = 1; space <= maxLineNum - i; space++) {// 输出空格,数量=最后一行-当前行数
				System.out.print("  ");
			}
			for (int star = 1; star <= (i * 2) - 1; star++) {// 输出星号,数量=行数*2-1
				System.out.print("* ");
			}
			System.out.println();// 换行
		}

		int declineCount = lineCount - maxLineNum;// 计算剩下的几行,这几行星号的数量是递减的
		for (int i = 1; i <= declineCount; i++) {// 循环菱形数量越来越少的行数
			for (int space = 1; space <= i; space++) {// 输出空格,数量等于当前的行数
				System.out.print("  ");
			}
			for (int star = 1; star <= (declineCount - i + 1) * 2 - 1; star++) {// 输出星号,数量等于(总数-当前行数)*2-1
				System.out.print("* ");
			}
			System.out.println();
		}

	}
}

8.计算 1~20 的阶乘的倒数之和

编写 Java 程序,使用 while 循环语句计算 1 + 1/2!+1/3!+…+ 1/20!之和。

✡代码实现

public class Demo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		double sum = 0, a = 1;
		int i = 1;
		while (i <= 20) {
			sum = sum + a;
			i = i + 1;
			a = a * (1.0 / i);
		}
		System.out.println(sum);
	}

}

✡运行结果

image-20220721081055986

9.无重复组合

使用 for 循环,在控制台输出由 4、5、6、7 能组成多少个互不相同且无重复数字的三位数?都是多少?

public class RepeatNumber {
	public static void main(String[] args) {
		int bai = 0; // 百位上的数字
		int shi = 0; // 十位上的数字
		int ge = 0; // 个位上的数字
		int number = 0; // 数字的个数
		for (bai = 4; bai <= 7; bai++) {
			for (shi = 4; shi <= 7; shi++) {
				for (ge = 4; ge <= 7; ge++) {
					if (bai != shi && shi != ge && bai != ge) {
						number += 1;
						System.out.println(bai * 100 + shi * 10 + ge);
					}
				}
			}
		}
		System.out.println("总共能够组成" + number + "个数字!");
	}
}

✡运行结果

image-20220721082726080


9.查找素数

使用 for 循环,判断 1~100 有多少个素数,并在控制台上输出所有素数。

✡代码实现

public class SingleNum {
	public static void main(String[] args) {
		int count = 0;
		for (int i = 2; i < 101; i++) {//1不是素数,这里从2开始
			// 默认是素数
			boolean flag = true;
			for (int j = 2; j <= Math.sqrt(i); j++) {
				if (i % j == 0) {
					// 能整除
					flag = false;
				}
			}
			if (flag) {
				count += 1;
				System.out.print(i + ",");
			}
		}
		System.out.println("\n共计" + count + "个素数");
	}
}

✡运行结果

image-20220721083302310


10.百钱买百鸡

5文钱可以买一只公鸡,3 文钱可以买 1 只母鸡,1 文钱可以买 3 只雏鸡,现在用 100 文钱买 100 只鸡,那么公鸡、母鸡、雏鸡各有多少只?

✡代码实现

public class BuyChicken {// 百钱买百鸡
	public static void main(String[] args) {
		int cock, hen, chick;// 公鸡、母鸡、小鸡
		for (cock = 0; cock <= 20; cock++) {// 最多买20只公鸡
			for (hen = 0; hen <= 33; hen++) {// 最多买33只母鸡
				for (chick = 3; chick <= 99; chick += 3) {// 最多买99只小鸡(有“百鸡”的限制)
					if (5 * cock + 3 * hen + chick / 3 == 100) {// 百钱
						if (cock + hen + chick == 100) {// 百鸡
							System.out.println("公鸡:" + cock + "\t母鸡:" + hen + "\t小鸡:" + chick);
						}
					}
				}
			}
		}
	}
}

✡运行结果

image-20220721091746277


10.超市购物小程序

✡任务描述

编写一个超市购物程序,在一家超市有牙刷、毛巾、水杯、苹果和香蕉五种商品,商品价格如下表所示。

编号商品名称价格
1牙刷8.8元
2毛巾10.0元
3水杯18.8元
4苹果12.5元
5香蕉15.5元

​ 用户输入商品序列号进行商品购买,用户输入购买数量后计算出所需要花费的钱,一次购买结束后,需要用户输入“Y”或“N”,“Y”代表继续购买,“N”代表购物结束。

✡思路

(1) 从运行结果可以看出,我们需要先定义5个商品的价格,double类型,再打印出5种商品的价格。

(2) 从运行结果可以看出,这里我们让用户填写购买商品的序列号以及购买的数量,需要使用到Scanner类,

(3) 从运行结果可以看出,我们循环了选择购买的条件语句,这里使用while嵌套switch语句可以达到我们的目的,我们需要使用while循环switch的选择结构,而switch是判断用户选择购买商品序列号的条件语句。

✡代码实现

import java.util.Scanner;

public class Supermarket {
	/*
	 * 模拟商城购物小系统:1.用户选择商品后,后台计算商品价格; 2.使用while循环实现用户多次购买商品。
	 */
	public static void  main (String[] args) {
		double toothbrush=8.8;   //牙刷价格
	  	double towel=10.0;        //毛巾价格
	  	double cup=18.8; 		    //水杯价格
	  	double apple=12.5;        //苹果价格
	  	double banana=15.5;       //香蕉价格
	  	int i=0;
	  	String a="Y";
	  	System.out.println("-------------欢迎来到开心商城!-------------");
	  	System.out.println("1.牙刷的价格为:"+toothbrush+"元");
	 	System.out.println("2.毛巾的价格为:"+towel+"元");
	  	System.out.println("3.水杯的价格为:"+cup+"元");
	  	System.out.println("4.苹果的价格为:"+apple+"元");
	  	System.out.println("5.香蕉的价格为:"+banana+"元");
	  	while(a.equals("Y")) {
	  		Scanner sc1 = new Scanner(System.in); 
	  		System.out.println("请输入你需要购买商品的序列号:");
	  		i=sc1.nextInt();
	  		switch(i){
	  		case 1:
	  			System.out.println("请输入你需要购买牙刷的数量:");
	  		  	int toothbrushnnumber=sc1.nextInt();
	  		  	double toothbrushnnum=toothbrushnnumber*toothbrush;
	  		  	System.out.println("你购买了牙刷"+toothbrushnnumber+"支,需要花费"+toothbrushnnum+"元");
	  		  	System.out.println("需要继续购买请输入Y,否则输入N");
	  		  	a=sc1.next();
	  		  	break;
	  		case 2:
	  		 	System.out.println("请输入你需要购买毛巾的数量:");
	  		  	int towelnumber=sc1.nextInt();
	  		  	double towelnum=towelnumber*towel;
	  		  	System.out.println("你购买了毛巾"+towelnumber+"个,需要花费"+towelnum+"元");
	  		  	System.out.println("需要继续购买请输入Y,否则输入N");
	  		  	a=sc1.next();
	  		  	break;
	  		case 3:
	  		  	System.out.println("请输入你需要购买水杯的数量:");
	  		  	int cupnumber=sc1.nextInt();
	  		  	double cupnum=cupnumber*cup;
	  		  	System.out.println("你购买了水杯"+cupnumber+"个,需要花费"+cupnum+"元");
	  		  	System.out.println("需要继续购买请输入Y,否则输入N");
	  		  	a=sc1.next();
	  		  	break;
	  		case 4:
	  		  	System.out.println("请输入你需要购买苹果的数量:");
	  		  	int applenumber=sc1.nextInt();
	  		  	double applenum=applenumber*apple;
	  		 	System.out.println("你购买了苹果"+applenumber+"斤,需要花费"+applenum+"元");
	  		 	System.out.println("需要继续购买请输入Y,否则输入N");
	  		 	a=sc1.next();
	  		 	break;
	  		case 5:
	  		 	System.out.println("请输入你需要购买香蕉的数量:");
	  		 	int banananumber=sc1.nextInt();
	  		 	double banananum=banananumber*banana;
	  		 	System.out.println("你购买了香蕉"+banananumber+"斤,需要花费"+banananum+"元");                       
	  		 	System.out.println("需要继续购买请输入Y,否则输入N");
	  		 	a=sc1.next();
	  		 	break;
	  		}
	  	}
	  	System.out.println("期待您的下次光临!");
	}
}

✡运行结果

image-20220721132923977


11.为新员工分配部门

✡题目要求

某公司现有java程序开发部门、C#程序开发部门、asp.net程序测试部门、前端程序开发部门四个部门。编写一个程序实现新入职的员工的部门分配,要求根据用户输入的员工姓名和应聘语言确定员工应该分配到哪个部门。若公司没有与输入的语言匹配的部门,则进行相关提示。

✡实现思路

(1) 从任务描述中可知,我们需要使用Scanner类让用户输入新员工的姓名以及应聘的语言,并使用两个String数据接收用户输入的内容。

(2) 从任务描述中可知,我们可以使用switch条件语句根据语言判断所被分配的部门。

(3) 最后在switch条件语句中打印新员工姓名加所处的部门。

✡代码实现

import java.util.Scanner;

public class Department {
	public static void main(String[] args) {
		/*
		 * 根据用户输入的信息确定员工应分配到那个部门。
		 */
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入新员工的姓名:");
		String name = sc.next();
		System.out.println("请输入新员工应聘的语言:");
		String language = sc.next();
		switch (language) {
		case "Java":
		case "java":
			System.out.println(name + "被分配到java程序开发部门");
			break;
		case "C#":
		case "c#":
			System.out.println(name + "被分配到c#程序开发部门");
			break;
		case "asp.net":
			System.out.println(name + "被分配到asp.net程序测试部门");
			break;
		case "html":
		case "Html":
			System.out.println(name + "被分配到前端程序开发部门");
			break;
		default:
			System.out.println("抱歉,本公司不需要" + language + "语言的人。");
			break;
		}
		sc.close();
	}
}

✡运行结果

image-20220721134305649


12.剪刀石头布小游戏

✡任务描述

​ “剪刀石头布”的游戏相信大家都不陌生,本案例要求编写一个剪刀石头布游戏的程序。程序启动后会随机生成1~3的随机数,分别代表剪刀、石头和布,玩家通过键盘输入剪刀、石头和布与电脑进行5轮的游戏,赢的次数多的一方为赢家。若五局皆为平局,则最终结果判为平局。

✡实现思路

(1) 从运行结果中分析可知,我们需要使用先打印头部显示的内容。在使用for循环5次Scanner类的用户输入代码以及随机数,这样我们就可以得到5个用户输入和5个随机数。

随机数可以使用Random类中的nextInt(int n)方法,如下代码会生成一个1-9的随机数:

 int randomNumber=new Random().nextInt(10);

(2) 从任务描述中可知,我们生成的是1-3的随机数,可以把1代表剪刀,2代表石头,3代表布,首先使用if…else语句判断用户输入的内容,再根据随机生成的数字与玩家输入的内容做判断,可以得出一轮游戏的输赢。

(3) 最后在程序的开始定义两个int变量作为记录游戏输赢的值,在游戏中玩家获胜一句时a+1,在游戏平局时b+1,再使用if…else语句判断,将结果分过获胜、和局、失败三种结果。如果玩家与电脑获胜场次一致那结果为和局,如果玩家获胜场次大于电脑那么结果为获胜,反之则为失败。

✡代码实现

import java.util.Random;
import java.util.Scanner;

public class Game {
	public static void main(String[] args) {
		// 通过Random类中的nextInt(int n)方法,生成1-3的随机数 1代表剪刀 2代表石头 3代表布
		int a = 0; // 玩家获胜场次
		int b = 0; // 平局场次
		System.out.println("程序已启动");
		System.out.println("剪刀  石头  布");
		Scanner sc = new Scanner(System.in);
		for (int i = 1; i <= 5; i++) {
			System.out.println("第" + i + "局");
			String enter = sc.next(); // 接收用户输入的字符
			// 随机生成1-3的随机数
			int randomNumber = new Random().nextInt(3) + 1;
			if (enter.equals("剪刀")) { // 判断用户输入的字符
				if (randomNumber == 1) { // 判断谁输谁赢
					System.out.println("电脑本次出的是剪刀");
					System.out.println("打平了");
					b++; // 平局后b+1
				} else if (randomNumber == 2) {
					System.out.println("电脑本次出的是石头");
					System.out.println("你输了");
				} else if (randomNumber == 3) {
					System.out.println("电脑本次出的是布");
					System.out.println("你赢了");
					a++; // 玩家赢后 a+1
				}
			} else if (enter.equals("石头")) {
				if (randomNumber == 1) {
					System.out.println("电脑本次出的是剪刀");
					System.out.println("你赢了");
					a++;
				} else if (randomNumber == 2) {
					System.out.println("电脑本次出的是石头");
					System.out.println("打平了");
					b++;
				} else if (randomNumber == 3) {
					System.out.println("电脑本次出的是布");
					System.out.println("你输了");
				}
			} else if (enter.equals("布")) {
				if (randomNumber == 1) {
					System.out.println("电脑本次出的是剪刀");
					System.out.println("你输了");
				} else if (randomNumber == 2) {
					System.out.println("电脑本次出的是石头");
					System.out.println("你赢了");
					a++;
				} else if (randomNumber == 3) {
					System.out.println("电脑本次出的是布");
					System.out.println("打平了");
					b++;
				}
			} else {
				System.out.println("输入错误,游戏终止!请您认真玩游戏!");
			}
		}
		System.out.println("本次游戏您赢了" + a + "局,平了" + b + "局");
		int c = 5 - a - b; // 计算出电脑胜利的场次
		if (a == c) { // 和局
			System.out.println("和局!");
		} else if (a > b) { // 获胜
			System.out.println("您赢了!");
		} else {
			System.out.println("您输了!");
		}
		sc.close();
	}
}

✡运行结果

image-20220721100835704

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

W_chuanqi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值