关于java的printf

来源:互联网 发布:sql server 特殊sql 编辑:程序博客网 时间:2024/04/28 07:10

看来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);

祝幸福



0 0
原创粉丝点击