日期:2014-05-20  浏览次数:20786 次

一个输入两次密码就出问题的程序
import   java.io.IOException;
public   class   Test
{
public   void   Chk()
{ char   ch   =   '\0 ';
char   c[]   =   new   char[16];
int   i   =   0;
try
{
while(true)
{
ch   =   (char)(System.in.read());
if(ch   !=   '\r ')
{
c[i]   =   ch;
i++;
}
else   break;
}
}
catch(Exception   e)
{
System.out.println( "输入异常 ");
}
String   s   =   new   String(c,0,i);
System.out.print(s+s.length()+ "     ");
}
public   static   void   main(String[]   args)
{
Test   s   =   new   Test();
s.Chk();
s.Chk();
}
}

就是这个程序,运行之后,如果第一次输入的是正确的,第二次就不对了,c[0]成了换行符。为什么?

------解决方案--------------------
你只考虑了\R没有考虑\N
------解决方案--------------------
while(true){
ch = (char)(System.in.read());
if(ch != '\r '){
if(ch != '\n '){
c[i] = ch;
i++;
}
}else break;
}
有没有试试这样写?
------解决方案--------------------
你按回车的时候,系统加入了一个换行符号
在windows系统下,换行=换行+回车