老兄,你这个方法有问题:
static String ReadLn (int maxLg)  // utility function to read from stdin
    {
        byte lin[] = new byte [maxLg];
        int lg = 0, car = -1;
        String line = "";        try
        {
            while (lg < maxLg)
            {
                car = System.in.read();
                if ((car < 0) || (car == '\n')) break;
                lin [lg++] += car;
            }
        }
        catch (IOException e)
        {
            return (null);
        }        if ((car < 0) && (lg == 0)) return (null);  // eof
        return (new String (lin, 0, lg));
    }
你想想你在Begin这个方法中调用到了这方法:change1.ReadLn(255)
可是方法ReadLn中的lg < maxLg只会用于是true,所以会造成死循环:)
代码太多了,只看到这里了:)