/*   Pp.java*/
import java.io.*;
class Pp{
 public static void main(String args[]){
char c=' ';int a;String s=" ";
   
    System.out.println("请输入一个字符:");          //输入字符
     try {                                           
          c=(char)System.in.read();
        }    catch(IOException e){}
   System.out.println("   "+c);
   System.out.println("请输入一个数:");      //输入数
   try{
      
       BufferedReader in=
          new BufferedReader(new InputStreamReader(System.in));
      
      s=in.readLine();
      a=Integer.parseInt(s);
      System.out.println("shurudeshi :"+a);
     }
    catch(IOException e){e.printStackTrace();}  System.out.println("请输入字符串");                   //输入字符串
  try {
      BufferedReader in =                                  //格式控制有点异常
      new BufferedReader(new InputStreamReader(System.in));
      s=in.readLine();   
       
      }
  catch(IOException e){}  System.out.println("输出s"+s);
  }
}

解决方案 »

  1.   

    。。你回车输入的时候就默认输入了所有的in的字符串了。也就是打开了input流,这三个方法你应该运行在三个main函数中
      

  2.   

      BufferedReader in=
              new BufferedReader(new InputStreamReader(System.in));
    不用每次都取实例化一个输入流吧。。你把这个提到异常外面去。。后面直接用in就应该可以的
      

  3.   

    问题是这样的:
     try {                                           
              c=(char)System.in.read();
            }
        catch(IOException e){}
    当你执行到这句话,输入一个字符之后,需要按回车键才能继续执行下面的,可是这个回车键也进入
    System.in这个输入流里面了,当你读入了一个字符之后,Syste.in里面还有有个回车符,程序读入
    刚才输入的字符之后继续执行下面的代码,,当执行到 s=in.readLine();的时候,它会直接读取
    System.in里面剩下的那个回车键,这样就相当于将一个“”(空字符串)赋值给s了,所以再执行到
    a=Integer.parseInt(s);这句话的时候就会因为数据转换发生异常。解决的办法是在s=in.readLine();前增加一条语句in.readLine();
      

  4.   

    import java.util.Scanner;
    class T
    {
    public static void main(String[] args)
    {
    Scanner in=new Scanner(System.in);
    // in.next();//输入字符串
    // in.nextBoolean();//输入bool值。。
    // in.nextInt();//输入整数。还有更多的看api
    }
    }
      

  5.   

    楼上哥们所说的Scanner是jdk_1.5中才有的