在软件构造实验3中,从文本中读取有效信息时,出现了读取到的信息错误的问题
读取信息时,前两个字符总是相等,后面读取到的字符串也依次发生了错误
摘取部分错误代码如下
public static void main(String[] args)
{
int i = 0;
String s = "Java";
String st = "";
st = st + s.charAt(i);
System.out.println(st);
st = st + s.charAt(i++);
System.out.println(st);
st = st + s.charAt(i++);
System.out.println(st);
st = st + s.charAt(i++);
System.out.println(st);
}
错误结果。
首先观察到的错误就是前两个字符相等,这与我们希望的结果明显不同
第一个字符输出与第二个字符相等,很明显这里实际执行的操作应该是
st = st + s.charAt(0);
st = st + s.charAt(0);
这时候才反应过来i++与++i的区别
i++:使用i的值之后,将i的值加1
++i:将i的值加1之后,使用i的值
i--:使用i的值之后,将i的值减1
--i:将i的值减1之后,使用i的值
public static void main(String[] args)
{
int i = 0;
String s = "Java";
String st = "";
st = st + s.charAt(i);
System.out.println(st);
st = st + s.charAt(++i);
System.out.println(st);
st = st + s.charAt(++i);
System.out.println(st);
st = st + s.charAt(++i);
System.out.println(st);
}
修改后的结果
自增与自减运算符在刚开始接触高级语言的时候就已经学习过了,但是在平时使用的过程中可能很少需要区分i++与++i的区别,因此可能稍加不注意就出现了bug。有时可能不容易检查
在写代码的时候注意甄别两者的区别,可以避免在后续过程中调试的麻烦