首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

猜数游戏输入字母会异常

2012-01-16 
猜数游戏输入字母会错误代码如下import java.util.Random import java.util.Scanner public class Kaiko

猜数游戏输入字母会错误
代码如下

import java.util.Random ;
import java.util.Scanner ;

public class Kaikouzhong{

public static void main(String[] args){
int n = 0 , m = 99 ;
Random r = new Random();
int z = r.nextInt(100);
int s = z + 1 ;
System.out.println( "猜数游戏\n");
System.out.println( "请输入一个1-99之间的数");
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
while (i != s){
while (i>99||i<1){
System.out.println( "输入有误,请输入一个1-99之间的数");
i = sc.nextInt();
}
System.out.println("输入的数为"+i);
if (i>s){
System.out.println(n+" 到 "+i);
m = i ;
System.out.println( "请输入一个"+n+"到"+m+"之间的数");
i = sc.nextInt();
}else{
System.out.println(i+" 到 "+m);
n = i ;
System.out.println( "请输入一个"+n+"到"+m+"之间的数");
i = sc.nextInt();
}
while (i>m||i<n){
System.out.println( "输入有误,请输入一个"+n+"到"+m+"之间的数");
i = sc.nextInt();
}
}
System.out.println("中奖号码为"+s);
System.out.println("中奖了");
}
}


怎么可以限制输入字母返回重新输入呢、




[解决办法]
for example

Java code
public static void main(String[] args){    int n = 1, m = 99 ;    Scanner sc = new Scanner(System.in);    Random r = new Random();    int s = r.nextInt(99) + 1;    System.out.println( "猜数游戏\n");    while (true) {        System.out.printf( "请输入一个%d-%d之间的数\n", n, m);        String str = sc.nextLine();        int i = 0;        try {            i = Integer.parseInt(str);            if (i<n || i>m) {                throw new Exception("out of range.");            }        } catch (Exception e) {            System.out.println("输入有误,请重新输入");            continue;        }         if (i < s) {            System.out.printf("输入的数是%d,比中奖号码小,再猜\n", i);            m = i;        } else if (i > s) {            System.out.printf("输入的数是%d,比中奖号码大,再猜\n", i);            n = i;        } else {            System.out.println("输入的数是%d,中奖号码是%d,中奖了\n", i, s);            System.out.println("是否继续?请输入[quit]退出");            str = sc.nextLine();            if ("quit".equals(str)) {                break;            }            n = 1;            m = 99;            s = r.nextInt(99) + 1;        }    }}
[解决办法]
Java code
public class Kaikouzhong {    public static void main(String[] args) {        int n = 0, m = 99;        Random r = new Random();        int z = r.nextInt(100);        int s = z + 1;        System.out.println("猜数游戏\n");        System.out.println("请输入一个1-99之间的数");        Scanner sc = new Scanner(System.in);        int i=0;        try{            i = sc.nextInt();            while (i != s) {                while (i > 99 || i < 1) {                    System.out.println("输入有误,请输入一个1-99之间的数");                    i = sc.nextInt();                }                System.out.println("输入的数为" + i);                if (i > s) {                    System.out.println(n + " 到 " + i);                    m = i;                    System.out.println("请输入一个" + n + "到" + m + "之间的数");                    i = sc.nextInt();                } else {                    System.out.println(i + " 到 " + m);                    n = i;                    System.out.println("请输入一个" + n + "到" + m + "之间的数");                    i = sc.nextInt();                }                while (i > m || i < n) {                    System.out.println("输入有误,请输入一个" + n + "到" + m + "之间的数");                    i = sc.nextInt();                }            }            System.out.println("中奖号码为" + s);            System.out.println("中奖了");        }catch(Exception e){            System.out.println("==只能输入数字!游戏结束==");        }            }} 

热点排行