我用Java获取键盘输入,在控制台输入“o”,然后用Backspace把“o”删除,再输入“please”,最后得到输出结果是“oplease”。请问这是怎么回事儿,怎样避免程序如下
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class test {
public static void main(String[] arge) {
String str = "0";
try {
str = new BufferedReader(new InputStreamReader(System.in)).readLine();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(str);
}
}
你上面定义str的时候应该写成String str="";
这样就不会出现那种情况了。另外要告诉你,你键盘敲入的o并非最后产生结果中的o,而是你先前定义的str变量的值。
还有1楼的你说错了,就算LZ把str的初始值设置为"0",最终的str结果是LZ输入的值
over
楼主的这个问题很简单:注意:这里你并没有删除,因为你其实是输入了一个 backspace 退格字符楼主的描述:在控制台输入“o”,然后用Backspace把“o”删除,再输入“please”,最后得到输出结果是“oplease”。 (1)先输入 "o"(2)输入backspace字符,这里掩盖了字符 "o"(3)然后输入"please"打印的时候显示oplease (说明:这里的p刚好掩盖了backspace退格字符)
你一定要知道,当你输入backspace的时候,表面上你是删除了以个字符,实际上你应该是输入了以个字符只不过这个字符对你来说是不可见的。