java编写猜数字游戏中,解决在while循环内部使while有条件的实行循环。

在用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();
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值