使用扫描仪输入转义序列不起作用

时间:2018-10-22 17:23:53

标签: java escaping

下面是我要求用户输入字符串并为另一个字符串提供值的代码。

public static void main(String[] args) throws Exception {

Scanner sc=new Scanner(System.in);
String s=sc.next();  //input="C:\\slp.txt" or C:\\slp.txt
String j="C:\\slp.txt";
System.out.println(s);
System.out.println(j);
}

s的输出=“ C:\\ slp.txt”或C:\\ slp.txt

j = C:\ slp.txt的输出

为什么jvm在j情况下而不是s情况下被视为反斜杠转义序列?

1 个答案:

答案 0 :(得分:0)

当您在代码中对字符串进行硬编码时,说出要指定,

String s = "hey \";

这不会编译/工作,因为某些特殊字符(例如slash()和doublequote(“))在字符串中具有特殊含义。像slash用来转义使用双引号来开始和结束字符串的字符。您需要转义它们,否则解析器将无法解析,从而导致编译错误。因此,如果您想要文字值\,则需要转义并将其写为\\,同时在代码中指定它。

但是,当您在运行时从用户处获取输入时,则不必担心转义字符,因为不必为字符串的正确性而对输入的输入进行解析,而是用户可以输入他们想要的任何内容,并且确实可以输入您输入\\,然后JVM负责保留用户输入的用户输入,因此在内部,这两个斜杠实际上由四个斜杠\\\\表示。尝试调试,看看用户输入的字符串值。

希望这可以解释。让我知道您是否还有任何疑问。