日期:2014-05-20  浏览次数:20700 次

初学者问题,为啥不执行这条语句呢?
public   void   functionlist()     //方法菜单
{
try{
System.out.println( "1.查询机器 ");
System.out.println( "2.强制关机 ");
System.out.println( "3.列出数据 ");
System.out.println( "4.查看机器状态 ");

System.out.print( "请选择: ");

System.out.println( " ");
xuanze=(char)System.in.read();

if   (xuanze== '1 ')
select();

System.out.println( "错误 ");

}catch(Exception   e)
{
System.out.println(e);
}
}
以上是一个类里的一个方法。   我郁闷的是  
System.out.println( "1.查询机器 ");
System.out.println( "2.强制关机 ");
System.out.println( "3.列出数据 ");
System.out.println( "4.查看机器状态 ");

System.out.print( "请选择: ");
这四条和 System.out.println( "错误 ");
都执行了   就是没有执行中间那条接收输入的。导致我一调用这个方法就报错
这是为什么     我实在找不出来错在哪里了。     请朋友们帮忙看看     谢谢了!

------解决方案--------------------
你不妨试一下,下面这种方法,就是把读取控制台输入的几行代码封装到一个方法里,然后在每个需要读取的地方调用一下该方法不就行了吗? 可封装成如下所示
/*********************
* 读取控制台输入的字符串
* @return 从控制台输入的命令字符串
* @author xiaosun2
*********************/
public String readConsole(){
String str =null;

try{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
str = br.readLine();
}
catch(IOException ioe){
System.out.println(ioe.getMessage());
ioe.printStackTrace();
}

return str;
}

然后读取出来之后 返回的是一个字符串,然后你不是想走一个开关语句吗
int i = Integer.parseInt(调用readConsole()); //将读取到的字符串转换成1~4的数值
switch(i){
case 1: 调用查询机器的方法;
break;
case 2: 调用强制关机的方法;
break;
case 3: 调用列出数据的方法;
break;
case 4: 调用查看机器状态的方法;
break;
default:System.out.println( "输入有误,请核对后重新输入! ");
break;
}

你再重新组织一下吧