这里是我的一段代码:不清楚是哪里没有做好,结果有点问题:
public static void main(String[] args) {
// MainTest mainTest = new MainTest();
// mainTest.init();
DiceGame diceGame = new DiceGame();
// BufferedReader reader = null;
byte[] bArray=new byte[20];
char i;
while (true) {
i = '0';
System.out.println("请选择您所要操作的选项...");
System.out.println("1.输入名字 2.玩游戏 3.获取排名 4.退出");
try {
i = (char)System.in.read();
switch (i) {
case '1':
System.in.read(bArray);
String str=new String(bArray);
System.out.println("Name:");
// reader = new BufferedReader(new InputStreamReader(System.in));
// diceGame.getM_Player().setName(reader.readLine());
str = str.trim();
diceGame.getM_Player().setName(str);
System.out.println(diceGame.getM_Player().getName());
break;
case '2':
if (diceGame.getM_Player().getName() == null) {
System.out.println("Please enter your name!");
break;
}
else {
diceGame.play();
diceGame.saveScore();
System.out.println("您本次掷骰子的值为:" + diceGame.getM_Player().getScore());
}
break;
case '3':
diceGame.getRankList();
break;
case '4':
System.exit(1);
break;
default:
System.out.println("Please enter a right number!");
break;
}
} catch (IOException e) {
e.printStackTrace();
}
} }输出的结果是这样的:
请选择您所要操作的选项...
1.输入名字 2.玩游戏 3.获取排名 4.退出
1
Name:请选择您所要操作的选项...
1.输入名字 2.玩游戏 3.获取排名 4.退出//这样的话我还没有输入名字它就又要求我输入操作了。不清楚是哪里出问题了,希望能帮我看下。谢谢哈

解决方案 »

  1.   

    之前都是没有问题的,只是我加了while循环,并且里面添加了输入字符串的语句之后才出现问题,所以我觉得应该是使用字符流的时候出现了问题。
      

  2.   

    问题应当是出在了你的  DiceGame   里面,你的while(true)在不停的循环,所以要不停的执行i = '0';
    System.out.println("请选择您所要操作的选项...");
    System.out.println("1.输入名字 2.玩游戏 3.获取排名 4.退出");把你的DicGame帖出来看看
      

  3.   

    觉得是你自己分析的输入流问题,改成这样试试,少读了回车和换行字符:
    i = (char)System.in.read();
    System.in.read(new byte[2]);//读取回车换行键
    switch (i) {
    case '1':
    System.out.println("Name:");
    System.in.read(bArray);
    String str=new String(bArray);
      

  4.   

    已经解决了,谢谢你。问题是出在
    System.in.read(bArray);
    因为read一次只接受一个字符,而后面还有个/r/n导致了问题的出现。我改成:
    reader2 = new BufferedReader(new InputStreamReader(System.in));
    这样就行了。