一个输入两次密码就出问题的程序
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系统下,换行=换行+回车