本周练习题:JAVA 常用类

一.双色球幸运抽奖

基础部分:红球1-33号球中选6个(数字不可重复),蓝球1-16号球中选1个

提高部分:

用户输入6个红球数字,1个蓝球数字,与系统抽取的6个红球1个蓝球做比较。

6个红球和1个蓝球——一等奖

6个红球——二等奖

5个红球和1个蓝球——三等奖

5个红球或4个红球1个蓝球——四等奖

4个红球或3个红球1个蓝球——五等奖

2个红球1个蓝球或1个红球1个蓝球或1个蓝球——六等奖

package day20210807.test1;

import java.util.Arrays;
import java.util.Scanner;

/*双色球幸运抽奖
红球1-33号球中选6个(数字不可重复),蓝球1-16号球中选1个
提高题:
用户输入6个红球数字,1个蓝球数字,与系统抽取的6个红球1个蓝球做比较。.
6个红球和1个蓝球一一
一等奖
6个红球一-二等奖
5个红球和1个蓝球一-三等奖
5个红球或4个红球1个蓝球一-四等奖
4个红球或3个红球1个蓝球一-五等奖
2个红球1个蓝球或1个红球1个蓝球或1个蓝球一-六等奖*/

public class DoubleLucky {
	public static void main(String[] args) {

		// 系统生成红球篮球
		int[] reds = new int[6];
		for (int i = 0; i < reds.length; i++) {
			int random = (int) (Math.random() * 33) + 1;

			while (isSame(reds, random)) {
				random = (int) (Math.random() * 33) + 1;
			}

			reds[i] = random;

		}
//		System.out.println("系统红球生成的数为:" + Arrays.toString(reds));

		int random2 = (int) (Math.random() * 16) + 1;
//		System.out.println("系统蓝球生成的数为:" + random2);

		// 用户进行猜球
		Scanner scanner = new Scanner(System.in);
		System.out.println("==============================");
		System.out.println("     欢迎光临限时猜球系统");
		System.out.println("==============================");
		//猜红球
		int[] red=new int[6];
		for (int i =0; i < 6; i++) {
			System.out.print("请输入您所猜的第"+(i+1)+"个红球:");
			int a=scanner.nextInt();
			 red[i] = a;
		}
		//猜蓝球
		System.out.print("请输入您所猜的第一个蓝球:");
		int blue = scanner.nextInt();
		
		System.out.println("用户红球生成的数为:" + Arrays.toString(red));
		System.out.println("用户蓝球生成的数为:" + blue);

		// 比较用户输入的球和系统自动生成的球
		//统计猜中的红球个数
		int redSame = 0;
		for (int i = 0; i < reds.length; i++) {
			for (int j = 0; j < red.length; j++) {
				if (reds[i] == red[j])
					redSame++;
			}
			
		}
		//统计猜中的篮球个数
		int blueSame = 0;
		if (blue == random2) {
			blueSame++;
		}
		System.out.println("猜中的红球个数为:" + redSame);
		System.out.println("猜中的蓝球个数为:" + blueSame);
		
		
		
		//进行颁奖
		System.out.println("==============================");
		System.out.println("        现在是颁奖时刻                      ");
		System.out.println("==============================");
		if (redSame==6&&blueSame==1) {
			System.out.println("恭喜您获得一等奖");
		}else if (redSame==6&&blueSame==0) {
			System.out.println("恭喜您获得二等奖");
		}else if (redSame==5&&blueSame==1) {
			System.out.println("恭喜您获得三等奖");
		}else if (redSame==5||(redSame==4&&blueSame==1)) {
			System.out.println("恭喜您获得四等奖");
		}else if (redSame==4||(redSame==3&&blueSame==1)) {
			System.out.println("恭喜您获得五等奖");
		}else if ((redSame==2&&blueSame==1)||(redSame==1&&blueSame==1)||blueSame==1) {
			System.out.println("恭喜您获得六等奖");
		}else {
			System.out.println("很遗憾,您没有中奖");
		}

	}

	// 进行判断新生成的随机数在数组中有没有重复
	public static boolean isSame(int[] reds, int random) {
		boolean flag = false;
		for (int i = 0; i < reds.length; i++) {
			if (reds[i] == random) {
				flag = true;
				break;
			}

		}
		return flag;
	}
}

参考老师的代码后发现一些需要改进的地方:

1.用户输入的数要在1~33之间

2.用户输入的数也不能重复

3.用同一个方法多时,都尽量用方法封装起来

4.不固定数组大小

针对前面两个点进行了改进

 

package day20210807.test1;

import java.util.Arrays;
import java.util.Scanner;

/*双色球幸运抽奖
红球1-33号球中选6个(数字不可重复),蓝球1-16号球中选1个
提高题:
用户输入6个红球数字,1个蓝球数字,与系统抽取的6个红球1个蓝球做比较。.
6个红球和1个蓝球一一
一等奖
6个红球一-二等奖
5个红球和1个蓝球一-三等奖
5个红球或4个红球1个蓝球一-四等奖
4个红球或3个红球1个蓝球一-五等奖
2个红球1个蓝球或1个红球1个蓝球或1个蓝球一-六等奖*/

public class DoubleLucky {
	public static void main(String[] args) {

		// 系统生成红球篮球
		int[] reds = new int[6];
		for (int i = 0; i < reds.length; i++) {
			int random = (int) (Math.random() * 33) + 1;

			while (isSame(reds, random)) {
				random = (int) (Math.random() * 33) + 1;
			}

			reds[i] = random;

		}
//		System.out.println("系统红球生成的数为:" + Arrays.toString(reds));

		int random2 = (int) (Math.random() * 16) + 1;
//		System.out.println("系统蓝球生成的数为:" + random2);

		// 用户进行猜球
		Scanner scanner = new Scanner(System.in);
		System.out.println("==============================");
		System.out.println("     欢迎光临限时猜球系统");
		System.out.println("==============================");
		//猜红球
		int[] red=new int[6];
		for (int i =0; i < 6; i++) {
			System.out.print("请输入您所猜的第"+(i+1)+"个红球:");
			int a=scanner.nextInt();
			if (isSame(red, a)) {
				System.out.println("请不要猜重复的数");
				i--;
				continue;
			}
			if (a<1||a>33) {
				System.out.println("超出范围,请输入1~33之间的数");
				i--;
			}
			 red[i] = a;
		}
		//猜蓝球
		System.out.print("请输入您所猜的第一个蓝球:");
		int blue = scanner.nextInt();
		
		System.out.println("用户红球生成的数为:" + Arrays.toString(red));
		System.out.println("用户蓝球生成的数为:" + blue);
		System.out.println("系统红球生成的数为:" + Arrays.toString(reds));
		System.out.println("系统蓝球生成的数为:" + random2);

		// 比较用户输入的球和系统自动生成的球
		//统计猜中的红球个数
		int redSame = 0;
		for (int i = 0; i < reds.length; i++) {
			for (int j = 0; j < red.length; j++) {
				if (reds[i] == red[j])
					redSame++;
			}
			
		}
		//统计猜中的篮球个数
		int blueSame = 0;
		if (blue == random2) {
			blueSame++;
		}
		System.out.println("猜中的红球个数为:" + redSame);
		System.out.println("猜中的蓝球个数为:" + blueSame);
		
		
		
		//进行颁奖
		System.out.println("==============================");
		System.out.println("        现在是颁奖时刻                      ");
		System.out.println("==============================");
		if (redSame==6&&blueSame==1) {
			System.out.println("恭喜您获得一等奖");
		}else if (redSame==6&&blueSame==0) {
			System.out.println("恭喜您获得二等奖");
		}else if (redSame==5&&blueSame==1) {
			System.out.println("恭喜您获得三等奖");
		}else if (redSame==5||(redSame==4&&blueSame==1)) {
			System.out.println("恭喜您获得四等奖");
		}else if (redSame==4||(redSame==3&&blueSame==1)) {
			System.out.println("恭喜您获得五等奖");
		}else if ((redSame==2&&blueSame==1)||(redSame==1&&blueSame==1)||blueSame==1) {
			System.out.println("恭喜您获得六等奖");
		}else {
			System.out.println("很遗憾,您没有中奖");
		}

	}

	// 进行判断新生成的随机数在数组中有没有重复
	public static boolean isSame(int[] reds, int random) {
		boolean flag = false;
		for (int i = 0; i < reds.length; i++) {
			if (reds[i] == random) {
				flag = true;
				break;
			}

		}
		return flag;
	}
}

二.注册功能

要求用户名长度不小于3,密码长度不小于6,注册时两个输入密码必须相同

提高题:加上注册时邮箱是否合法且是否常见的邮箱后缀(@qq.com或@163.com等)

限定.只能出现1次,@只能出现1次 ,.在@后面,@后为qq.com或163.com

package day20210807.test2;

import java.util.Scanner;

/*
 * 要求用户名长度不小于3,密码长度不小于6,注册时两个输入密码必须相同
提高题:加上注册时邮箱是否合法且是否常见的邮箱后缀(@qq.com或@163.com等)
			限定.只能出现1次,@只能出现1次 ,.在@后面,@后为qq.com或163.com*/

public class Register {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		System.out.println("======================================");
		System.out.println("   新朋友你好,欢迎进入“不注册成功不能走”系统");
		System.out.println("注意事项:" + "\n" + "您将注册昵称、密码、邮箱这三个内容。" + "\n" + "只要有任何一个不符合规范都会从头注册,一直到成功为止。" + "\n"
				+ "如果您后悔了,输入“loser”即可退出"+"\n"+"如果您想继续注册,输入“continue”即可参与");
		System.out.println("=======================================");
		System.out.print("请输入您的选择:");
		String l = scanner.next();
		//不按规定输入
		if (!(l.equals("loser")||l.equals("continue"))) {
			System.out.print("请按规定输入:");
			 l = scanner.next();
		}
		//退出注册
		if (l.equals("loser")) {
			System.out.println("期待您的下次到来");
			return;

		}
		// 注册昵称 密码 邮箱
		if (l.equals("continue")) {
		while (true) {
			System.out.print("请输入您的昵称:");
			String name = scanner.next();
			if (name.length() < 3) {
				System.out.println("!!!用户名的长度不能小于3!!!");
				continue;
			}

			System.out.print("请输入您的密码:");
			String password1 = scanner.next();
			System.out.print("请再次输入您的密码:");
			String password2 = scanner.next();
			if (!(password1.equalsIgnoreCase(password2) && password1.length() >= 6)) {

				System.out.println("!!!两次密码输入不一致或者长度小于6!!!");
				continue;
			}

			System.out.print("请输入您的邮箱:");
			String email = scanner.next();
			int index1 = email.indexOf("@");
			int index2 = email.lastIndexOf("@");
			int index3 = email.indexOf(".");
			int index4 = email.lastIndexOf(".");
			int el = email.length();
			if (index1 != -1 && index1 == index2 && index3 != -1 && index3 == index4 && index3 > index1&&(email.substring(index1+1, el).equals("qq.com") || email.substring(index1+1, el).equals("163.com"))) {
				
				System.out.println("注册成功!");
					
			

			}else {
				System.out.println("!!!邮箱输入格式错误!!!");
				continue;
			
			}
			
			System.out.println("您的昵称:"+name);
			System.out.println("您的密码:"+password1);
			System.out.println("您的邮箱:"+email);
			break;

		}
		}

	}

}

三.显示批发商品信息

输入批发商品编号和数量,以指定格式显示价格和总金额

提高题:批发商信息中包含库存量,当输入数量大于库存量则无法交易.

package day20210807.test3;

import java.util.Scanner;

/*
 * 显示批发商品信息,输入批发商品编号和数量,以指定格式显示价格和总金额
提高题:批发商信息中包含库存量,当输入数量大于库存量则无法交易.*/

public class Cmmodity {
	public static void main(String[] args) {
		System.out.println("*****欢迎进入商品批发城*****");
		System.out.println("编号" + "\t" + "商品" + "\t" + "价格" + "\t" + " " + "库存");
		String[] product = { "电风扇", "洗衣机", "电视机", "电冰箱", "空调机" };
		double[] price = { 124.23, 4500, 8800.9, 4456 };
		int[] stock = { 1000, 500, 350, 850, 150, 950 };
		for (int i = 0; i < price.length; i++) {
			int no = 0;
			System.out.println((i + 1) + "\t" + product[i] + "\t" + fenHao(price[i]) + "\t" + stock[i]);

		}
		System.out.println("*****************************");
		Scanner scanner = new Scanner(System.in);
		System.out.print("请输入您批发的商品编号:");
		int getNo = scanner.nextInt();
		// 当批发数量过多时,提醒所剩余的数量并且再次输入数量
		while (true) {
			System.out.print("请输入您的批发数量:");
			int getNumber = scanner.nextInt();
			if (stock[getNo - 1] < getNumber) {
				System.out.println("库存不足,目前" + product[getNo - 1] + "只有" + stock[getNo - 1] + "件");
				continue;
			}
			double all = price[getNo - 1] * getNumber;
			System.out.println("您买了"+getNumber+"个"+product[getNo - 1]+",需要付款:" + all + "元");
			break;

		}

	}

	// 三位数用一个逗号隔开
	public static String fenHao(double d) {
		String strNumber = d + "";// 把数转换为字符串
		int index = strNumber.lastIndexOf(".");
		if (index == -1) {
			index = strNumber.length();
		}
		StringBuffer sb = new StringBuffer(strNumber);
		for (int i = index - 3; i > 0; i -= 3) {
			sb.insert(i, ",");

		}
		return sb.toString();

	}

}

老师的思路:循环有人买  死循环 买一次 库存减一次。

安装老师的思路:我改了一些while(true)的位置,并且让库存的量可以减

package day20210807.test3;

import java.util.Scanner;

/*
 * 显示批发商品信息,输入批发商品编号和数量,以指定格式显示价格和总金额
提高题:批发商信息中包含库存量,当输入数量大于库存量则无法交易.*/

public class Cmmodity {
	public static void main(String[] args) {
		String[] product = { "电风扇", "洗衣机", "电视机", "电冰箱", "空调机" };
		double[] price = { 124.23, 4500, 8800.9, 4456 };
		int[] stock = { 1000, 500, 350, 850, 150, 950 };
		//老师的方法:循环有人买  死循环 买一次 库存减一次
		//我的思路:输入数量,库存不足,提醒,重新输入,正确,算钱,结束
		while (true) {

			System.out.println("*****欢迎进入商品批发城*****");
			System.out.println("编号" + "\t" + "商品" + "\t" + "价格" + "\t" + " " + "库存");

			for (int i = 0; i < price.length; i++) {
				int no = 0;
				System.out.println((i + 1) + "\t" + product[i] + "\t" + fenHao(price[i]) + "\t" + stock[i]);

			}
			System.out.println("*****************************");
			Scanner scanner = new Scanner(System.in);
			System.out.print("请输入您批发的商品编号:");
			int getNo = scanner.nextInt();
			// 当批发数量过多时,提醒所剩余的数量并且再次输入数量

			System.out.print("请输入您的批发数量:");
			int getNumber = scanner.nextInt();
			if (stock[getNo - 1] < getNumber) {
				System.out.println("库存不足,目前" + product[getNo - 1] + "只有" + stock[getNo - 1] + "件");
				continue;

			}
			double all = price[getNo - 1] * getNumber;

			System.out.println("您买了" + getNumber + "个" + product[getNo - 1] + ",需要付款:" + all + "元");
			stock[getNo - 1] -= getNumber;

		}

	}

	// 三位数用一个逗号隔开
	public static String fenHao(double d) {
		String strNumber = d + "";// 把数转换为字符串
		int index = strNumber.lastIndexOf(".");
		if (index == -1) {
			index = strNumber.length();
		}
		StringBuffer sb = new StringBuffer(strNumber);
		for (int i = index - 3; i > 0; i -= 3) {
			sb.insert(i, ",");

		}
		return sb.toString();

	}

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值