在用java编写一个猜数字游戏中,想使得可以自主的是否继续游戏。
于是我想到了运用标号跳转:
package 猜数字游戏测试;
import java.util.Random;
import java.util.Scanner;
public class 测试 {
public static void main(String[] args) {
int randomNumber;
abc: while (true) {
randomNumber/* 随机数 */ = new Random().nextInt(10);
System.out.println("随机数已生成");
System.out.println("-----请输入您猜的数字-----");
Scanner scin = new Scanner(System.in);
int enterNumber/* 输入号码 */ = scin.nextInt();
while (randomNumber != enterNumber) {
if (randomNumber > enterNumber) {
System.out.println("sorry,你猜小了");
} else {
System.out.println("sorry,你猜大了");
}
System.out.println("-----请输入您猜的数字-----");
enterNumber = scin.nextInt();
}
System.out.println("恭喜你答对了");
System.out.println("-----继续游戏?0或者1-----");
int judge/* 判断 */ = scin.nextInt();
if (judge == 1) {
continue abc;
} else {
System.out.println("游戏结束");
break abc;
}
}
}
}
但是却发现了一个提示:
“Resource leak: 'scin' is never closed”为:资源泄漏:“scin”永远不会关闭。
因此就想在循环结束后外面面添加一个scin.close(); 但是提示报错。
然而加到循环里面就只能运行一次就会关闭。
于是对“Scanner scin = new Scanner(System.in);”进行了改写,吧首先定义了“Scanner scin” 循环中只写“scin = new Scanner(System.in);”后就没有显示提示或者错误信息。
改写后代码如下:
package 猜数字游戏测试;
import java.util.Random;
import java.util.Scanner;
public class 测试 {
public static void main(String[] args) {
int randomNumber;
Scanner scin = null;
abc: while (true) {
randomNumber/* 随机数 */ = new Random().nextInt(10);
System.out.println("随机数已生成");
System.out.println("-----请输入您猜的数字-----");
scin = new Scanner(System.in);
int enterNumber/* 输入号码 */ = scin.nextInt();
while (randomNumber != enterNumber) {
if (randomNumber > enterNumber) {
System.out.println("sorry,你猜小了");
} else {
System.out.println("sorry,你猜大了");
}
System.out.println("-----请输入您猜的数字-----");
enterNumber = scin.nextInt();
}
System.out.println("恭喜你答对了");
System.out.println("-----继续游戏?0或者1-----");
int judge/* 判断 */ = scin.nextInt();
if (judge == 1) {
continue abc;
} else {
System.out.println("游戏结束");
break abc;
}
}
scin.close();
}
}