int ch=0;
  int pos=0;
  String strInfo=null;
  while(true)
  {            
  ch =System.in.read();  //我的问题在这里
  System.out.println(Integer.toHexString(ch));
  switch(ch)
  {
   case '\r':
    break;
   case '\n':
    strInfo= new String(buf,0,pos);
    for(int i=0;i<strInfo.length();i++)
    {
     System.out.println(Integer.toHexString
      ((int)strInfo.charAt(i)));
    }
    System.out.println(strInfo);
    for(int i=0;i<pos;i++)
    System.out.write(buf[i]);
    System.out.println();
    return;
   default:
    buf[pos++]=(byte)ch;
//请问为什么switch(ch)中的ch要int类型定义,为什么不用byte?另:有人回答说“用int 是为了防止返回 -1 的情况”,我不懂什么意思!
byte 范围不是也包括 -1 吗?

解决方案 »

  1.   

    System.in.read(); 这个函数返回的就是一个int类型的值;
    读出来的就是字符的ASSIC码,当然用int是最好的
      

  2.   

    java7已经支持字符串了
    switch("")
      

  3.   

    jdk6之前就是这么设计的,
    jdk7以后可以接受字符串。
      

  4.   

    switch 语句中的判断表达式类型是int  这个不是你决定,也不是我可以决定的。反正就这么用,记住低于int类型都可以 int, char, short,byte 都可以。java1.6之前都不支持String .   另外,像Long就不行了。 
      

  5.   

    byte,short ,int ,char,enum,String(jdk7)
      

  6.   

    java的switch当你用笔int范围小的类型时都会转为int,所以不存在int与byte不同的问题。
    那个告诉你为了防止-1的人是在忽悠你