黑马程序员技术交流社区

标题: 奇怪的错误出现在main()函数里面,哪里的问题? [打印本页]

作者: Mr.Z.Lee    时间: 2013-11-4 14:11
标题: 奇怪的错误出现在main()函数里面,哪里的问题?
  1. public static void main(String[] args) {

  2.                 String randstring="kjncxbf'h][[][.h/\[l[jp[.l[";
  3.                 String t=randstring.substring(5);
  4.                 System.out.println(t);
  5. }
复制代码
这段代码为何报出以下错误?
  1. Exception in thread "main" java.lang.Error: Unresolved compilation problem:
  2.         Invalid escape sequence (valid ones are  \b  \t  \n  \f  \r  \"  \'  \\ )

  3.         at com.itheima.add.main(add.java:7)
复制代码

作者: 落木萧萧    时间: 2013-11-4 14:13
本帖最后由 落木萧萧 于 2013-11-4 14:28 编辑

报错里的是一些特殊符号,是不能直接输出的。

  1. 比如单引号 ' 要写成 \',双引号要写成\"
复制代码
这叫转义字符,建议楼主看一下百度百科的词条。

作者: Clare0621    时间: 2013-11-4 14:24
根据提示:你代码输出字符串里面有“\[”连在一起,而  ' \'   是转义符,但与  '[' 连在一起是错误用法(提示说的很清楚),Java才会报出转义符异常,如需使用,在源代码  ' \ '后再加一个 ' \ '即可。
作者: ↘ふ紫铯幽夢    时间: 2013-11-4 15:19
java里面只要写在字符窜里的 \ 都代表转义,比如要用\ 本身,就要写成\\用自己转义一下。
作者: 咸鱼要吃猫    时间: 2013-11-4 15:26
“\[”连在一起  没有被java所识别
如果需要输出的这样的话   需要修改代码成“\\[”   第一个\表示转意
主要是由于防止你需要输出的语句里有java语言中特殊含义的字符混淆
\b 表示退格  
\t  表示制表符(TAB)  
\n 表示回车  
\f
\r 同表示回车  
\"表示能单独输出 “   
\' 表示能单独输出’
\\表示能单独输出\
作者: 冯国强    时间: 2013-11-4 17:59
这里的错误是关于转义字符,\'才是代表单引号,所以字符串中的单引号应写成\'
作者: 马富林    时间: 2013-11-6 02:29
问题出在\[,这两个符号在一起被认为是转义字符了,
所以系统才提示你如果输入转义字符的话就输入\t,\b等等。
要输入\的话就用\\就好了
作者: 枫儿    时间: 2013-11-6 08:51
不用说,初始化的String肯定是你狂乱敲键盘出来的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2