import java.util.Random;
import java.util.Scanner;
public class work2 {
/**
* 用户猜数字:由用户输入数字范围,进行猜数字
*/
public static void main(String[] args) {
guessNumber(10);
}
public static void guessNumber(int n) {
Random random = new Random();
int ran = random.nextInt(n);
int ranNext = -1;
System.out.println(ran);
Scanner sc = new Scanner(System.in);
System.out.println("请用户输入一个0-" + n + "之间的数字:\n您一共有5次机会");
for (int i = 5; i > 0; i--) {
int num = sc.nextInt();
if(ranNext >= 0){
ran = ranNext;
}
if (num > n || num < 0) {
System.out.println("您输入的数字超出范围,请重新输入:");
num = sc.nextInt();
} else if (num == ran) {
System.out.println("恭喜你,猜对了!\n接着下一局请输入yes,输入其他则退出");
String judge = sc.next();
if(judge.equals("yes")){
i = 6;
ranNext = random.nextInt(n);
System.out.println(ranNext);
System.out.println("请用户输入一个0-" + n + "之间的数字:\n您一共有5次机会");
}else{
break;
}
} else if (num != ran) {
if (i == 1){
System.out.println("对不起,你的机会用完了,再玩一次请输入yes,输入其他则退出");
String judge = sc.next();
if(judge.equals("yes")){
i = 6;
ranNext = random.nextInt(n);
System.out.println(ranNext);
System.out.println("请用户输入一个0-" + n + "之间的数字:\n您一共有5次机会");
}else{
break;
}
}else {
System.out.println("对不起,你猜错了!还剩" + (i - 1) +"次机会");
}
}
}
}
}
这个是在你代码的基础上修改的版本,主要是添加了level级别可以增加下难度,其次是采用递归调用。另外类命名要规范一些,再必要地方加些代码注释。希望对你有帮助。
package com.test;
import java.util.Random;
import java.util.Scanner;
/**
* 类的命名要规范起名的,首字母大写,名字有含义
*/
public class GuessNumGame {
/**
* 游戏级别
*/
private static int level =1;
/**
* 用户猜数字:由用户输入数字范围,进行猜数字
*/
public static void main(String[] args) {
guessNumber(10);
}
/**
* 猜数字
* @param end 0-end 猜数的范围
*/
public static void guessNumber(int end) {
Random random = new Random();
int ran = random.nextInt(end);
int ranNext = -1;
System.out.println(ran);
Scanner sc = new Scanner(System.in);
System.out.println("请用户输入一个0-" + end + "之间的数字:\n您一共有5次机会,当前级别"+level+"级");
for (int i = 5; i > 0; i--) {
int num = sc.nextInt();
if(ranNext >= 0){
ran = ranNext;
}
if (num > end || num < 0) {
System.out.println("您输入的数字超出范围,请重新输入:");
num = sc.nextInt();
} else if (num == ran) {
System.out.println("恭喜你,猜对了!\n接着下一局请输入yes,输入其他则退出");
String judge = sc.next();
if(judge.equals("yes")){
//进入下局升级提升难度
level++;
//如果不考虑性能,可以采用递归调用方式优化代码
guessNumber(end*level);
//此处break为了采用递归的方式时及时从方法栈中退出,
break;
}else{
break;
}
} else if (num != ran) {
if (i == 1){
System.out.println("对不起,你的机会用完了,再玩一次请输入yes,输入其他则退出");
String judge = sc.next();
if(judge.equals("yes")){
//重新开始级别复位成1级
level=1;
guessNumber(10);
//此处break为了采用递归的方式时及时从方法栈中退出,
break;
}else{
break;
}
}else {
System.out.println("对不起,你猜错了!还剩" + (i - 1) +"次机会");
}
}
}
}
}
初学的话建议在写代码的时候注意规范,你可以下载一个阿里的代码规约插件检查一下代码规范(IDEA开发工具里面可以搜索下载到)
附上扫描结果:
猜数逻辑和响应逻辑可以拆分两个函数