a=in.read(b,0,2);得到的是你读取的字节数,所以一直是2,b中得到的才是内容

解决方案 »

  1.   

    @@
    晕了~~
    楼上说得对,in.read(b,0,2)返回的是读入的byte数,当然是2了~~
      

  2.   

    1、如楼上说得,a一直为2,可改为:
      a=in.read(b,0,2);
      String s=new String(b);
      a=Integer.parseInt(s.trim());这样获取读入的数据2、循环有问题
    for(int i=0;i<6;i++)
    {
    if(y[i]==a)
    l=1;
    break;
    }
    这样只运行一次循环,因为break总被执行,应该是
    for(int i=0;i<6;i++)
    {
    if(y[i]==a){
    l=1;
    break;
    }
    }程序如下:import java.applet.Applet;
    import java.io.*;
    public class findsort
    {
    public static void main(String args[]) throws IOException
    {BufferedInputStream in=new BufferedInputStream(System.in);
    BufferedOutputStream out=new BufferedOutputStream(System.out);
    int y[]={2,4,5,7,9,0};
    int a;
    byte b[]=new byte[2];
    System.out.println("&Ccedil;&euml;&Ecirc;&auml;&Egrave;&euml;&Ograve;&ordf;&sup2;é&Ntilde;&macr;&micro;&Auml;&Ecirc;&yacute;×&Ouml;:");
    a=in.read(b,0,2);
    String s=new String(b);
    a=Integer.parseInt(s.trim());int l=0;
    for(int i=0;i<6;i++)
    {

    if(y[i]==a){
    l=1;
    break;
    }
    }
    if(l==0)
    {out.write(b,0,1);
    System.out.println("&Atilde;&raquo;&Oacute;&ETH;&Otilde;&Ograve;&micro;&frac12;!");
    out.flush();
    }
    else
    System.out.println("&Otilde;&Ograve;&micro;&frac12;&pound;&iexcl;");
    }
    }