一.双色球幸运抽奖
基础部分:红球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();
}
}