早上逛CSDN论坛,看到一位网友求助问题,这道题本来很简单,但由于一段时间没用IO类,花了很长一段时间才找到问题所在,根本原因在于第一次读取时发生了错误,少读了回车和换行。
为了掌握输入输出问题同时避免大家犯同样的错误,按照那位网友的做法重新写了个简单的示例,并参考了其他的网友的解决办法让大家更好的掌握这个知识点,如有侵权请告之。
以下代码都在本人机子上跑过,正常无误后发布,请大家放心使用
package com.demo01;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
/**
* Java获得键盘输入方法
* 1.使用BufferedReader
* 2.使用Scanner(这种比较简单)
* 两种方式都可以
* @author OracleX
*
*/
public class Demo2 {
public static void main(String args[]){
char i = 0;
boolean flag=true;
System.out.println("请选择您所要操作的选项...");
System.out.println("1.输入名字 2.玩游戏 3.获取排名 4.退出");
try {
i=(char) System.in.read();
System.in.read(new byte[2]); //问题的所在此处 少读了回车换行
} catch (IOException e) {
e.printStackTrace();
}
switch(i){
case '1':
System.out.println("请输入名字:");
// String str=getStringByBufferedReader();
String str=getStringByScanner();
System.out.println("名字是"+str);
flag=false;
break;
case '2':
if(flag){
System.out.println("请先输入名字");
}else{
System.out.println("进入游戏");
}
break;
case '3':
System.out.println("排名是.......");
break;
case '4':
System.exit(-1);
break;
default:
System.out.println("请输入正确的序号");
}
}
public static String getStringByBufferedReader(){
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String str="";
try {
str = br.readLine(); //获取字符串
} catch (IOException e) {
e.printStackTrace();
}
return str;
}
public static String getStringByScanner(){
Scanner scanner=new Scanner(System.in);
String str=scanner.next(); //获取字符串
// int num=scanner.nextInt(); //获取整数值
// System.out.println("num===="+num);
return str;
}
}