看来java不讨我喜欢是有道理的
最近发现java有一个很赞的东东叫做System.out.printf,而且看了相关文档发现和c++里面的printf的用法一样,于是就打开了hdu1002决定测试一下,顺便玩一玩BigInteger。
结果码出来之后就哭了,eclipse编译报错。
但是我写的东西跟文档上写的没什么区别,不应该会报错了,于是打开命令行直接编译,结果过了。
我傻了一下。。。。。。
于是各种翻阅文档,最终发现是eclipse的编译等级的问题,打开:工程->属性->java compiler,选择一下java编译等级到1.5以上就行了。
果然是eclipse傲娇了。
测试通过之后就交到了hdu上面去,结果pe了。。。
我又傻了一下。。。。。。
不应该啊。。。
又仔细检查了一遍,没有发现pe的可能,于是就伤心了。。。。。。
最后决定修改一下写法,改用System.out.println,重新交一下,过了。。。
我又傻了一下。。。。。。难道说hdu也傲娇了?
这明明没有任何科学性在里面啊。。。
于是在命令行上运行,将两种代码的运行结果都输出到文件,用notepad++仔细观察,于是错误原形毕露了。
原来java的printf和c++的printf对于’\n‘的处理并不一样
c++能自动根据系统的不同在windows下将'\n'转换为"\r\n",而java的printf却傻傻的就直接输出了'\n',没有'\r',
然后,虽然表面上观察到的结果都是一样多,都有一个换行,但是本质却不同。
java看起来很聪明,但实际上却傻傻的,不开心了。。。
附:代码部分:
相关代码只附上输出部分,读入和处理略
pe代码:
System.out.printf("Case %d:\n",i);
System.out.printf("%d + %d = %d\n",a,b,c);
println代码:
System.out.println("Case " + i + ":");
System.out.println(a + " + " + b + " = " + c);
ac代码:
System.out.printf("Case %d:\r\n",i);
System.out.printf("%d + %d = %d\r\n",a,b,c);
祝幸福