System.in.read()只读取一个byte的内容 第二次调用System.in.read()再读取下一个byte的内容。。。 也就是说,你输入1然后回车,第二次System.in.read()读到的是\r(CR)也或者是\n(LF) 比如你这个程序运行以后,你输入1N按回车试试? 把System.in.read()放到while判断中吧。