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("错误");
都执行了 就是没有执行中间那条接收输入的。导致我一调用这个方法就报错
这是为什么  我实在找不出来错在哪里了。  请朋友们帮忙看看  谢谢了!

解决方案 »

  1.   

    xuanze=(char)System.in.read();应为
    char xuanze=(char)System.in.read();
    我测了一下可以输入啊
      

  2.   

    public class MachineManager implements method,state {

    Scanner dedao=new Scanner(System.in);
    BufferedReader bufferedreader=new BufferedReader(new InputStreamReader(System.in));
    char xuanze=' ';

    public MachineManager()
    {
    try{
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");  //加载驱动

    }catch(ClassNotFoundException e)
    {
    System.out.println(e);
    }

    }
    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("aaaaaaaaaaaaaaa");

    }catch(Exception e)
    {
    System.out.println(e);
    }
    }
    }
    语法应该没有错误吧。。 就是不知道为啥不执行
      

  3.   

    学习中遇到问题请到付费IT问答社区www.nlld.net,采用社会化网络运营,有专家负责彻底解决,网站所有纠纷依法解决
      

  4.   

    你不妨试一下,下面这种方法,就是把读取控制台输入的几行代码封装到一个方法里,然后在每个需要读取的地方调用一下该方法不就行了吗? 可封装成如下所示
              /*********************
     * 读取控制台输入的字符串
     * @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;
    }你再重新组织一下吧
      

  5.   

    xiaosun2(小孙)   也不行 直接报NumberFormatException 异常
      

  6.   

    除了了主类里的接收可以用以外
    别的类里的接收都不可以用。 主类我单独写在了一个java文件里
      

  7.   

    楼主 你输入的是数字吗? 必须输入0~9之间的数字 才能用Integer.parsInt(String)来转换成int型的数值啊 
    另外你把要转换成int型的字符串上加一个.trim()方法 去掉字符串前后的空格  
    你再试试 输入一个 1 看看能不能调用 查询机器的方法。
      

  8.   

    我换了一下接收方式  换成scanner方式接收了 这下没问题了 不过不知道为什么
    一开始会有那样的问题