ljcxyz216
2021-07-08 16:27
采纳率: 100%
浏览 59
已采纳

Java编译错误,用记事本写的,用的是cmd运算符运行的

代码完全正确,为什么会出错?
代码如下:
public class test13{
public static void main(String[] args){
int x=5,y;//声明用于自增自减的整型变量

    System.out.println("--------对整数的自增和自减--------");

    y=x++;
    System.out.printf("y=x++的结果为:%d,%d \n",x,y);
    y=x--;
    System.out.printf("y=x--的结果为:%d,%d \n",x,y);
    y=++x;
    System.out.printf("y=++x的结果为:%d,%d \n",x,y);
    y=--y;
    System.out.println("y=--x的结果为:%d,%d \n",x,y);

}

}
错误显示为:
test13.java:14: 错误: 对于println(String,int,int), 找不到合适的方法
System.out.println("y=--x的结果为:%d,%d \n",x,y);
^
方法 PrintStream.println()不适用
(实际参数列表和形式参数列表长度不同)
方法 PrintStream.println(boolean)不适用
(实际参数列表和形式参数列表长度不同)
方法 PrintStream.println(char)不适用
(实际参数列表和形式参数列表长度不同)
方法 PrintStream.println(int)不适用
(实际参数列表和形式参数列表长度不同)
方法 PrintStream.println(long)不适用
(实际参数列表和形式参数列表长度不同)
方法 PrintStream.println(float)不适用
(实际参数列表和形式参数列表长度不同)
方法 PrintStream.println(double)不适用
(实际参数列表和形式参数列表长度不同)
方法 PrintStream.println(char[])不适用
(实际参数列表和形式参数列表长度不同)
方法 PrintStream.println(String)不适用
(实际参数列表和形式参数列表长度不同)
方法 PrintStream.println(Object)不适用
(实际参数列表和形式参数列表长度不同)
1 个错误
图片为:

img

img

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • 是赵敢敢啊 2021-07-08 16:36
    已采纳

    java 的打印没有这个类型的,你要打印的是String类型的
    需要这么写

    System.out.println(String.format("y=--x的结果是:%d,%d\n",x,y));
    
    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • CSDN专家-微编程 2021-07-08 16:52

    你应该是刚学完c语言,开始学习java了吧,这两个语言有类似的地方,但也有很多地方不同,你上面的报错都提示你正确的写法了,printf-->println
    java的控制台输出语句是System.out.println();或者System.out.print();
    println与print的区别在于println可以自动换行,print不会自动换行

    java的三个阶段:java基础篇,javaEE操作数据库篇(jdbc-servlet),javaweb框架篇
    路还比较长,慢慢来吧~~~~~

    评论
    解决 1 无用
    打赏 举报
  • include_iostream_ 2021-07-08 16:29

    看起来是最后一行的printf写成了println,改一下就好了。
    ==== 补充 ====
    我服了,其他人是真不知道PrintStream的printf还是开玩笑?(仅针对认为printf输出不合理的说法,那种说法显然是错误的)
    System.out是PrintStream类型,PrintStream官方文档:
    https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html
    System.out.printf当然是合理的用法。题主第14行,确实是把printf错写成println了,改了这个就能用,前面人家printf不也没报错么。既然提供了printf,凭啥非得告诉人家就得用println?
    ==== 分割线 ====
    我查找到的所有资料均显示printf和println高度重合,从来没有说一个正确一个错误的说法,更没有比较优劣的说法。我个人认为,“java就一定应该用println”是一种非常没有道理的定势思维。我找到的资料中,没有任何证据能表明println比printf更合适,无论是功能还是性能上。(事实上,StackOverflow有些用户建议使用printf来保证比较长的格式串的可读性。)
    参考资料:

    目前我所得到的资料给出的结论是:printf和println在绝大多数情况下可以替换,但有些情形需要具体情况具体分析。不过这对于这个问题本身是题外话了。
    如果对性能有要求的话……我进行了测试。StackOverflow有人测试了,简单连接的话printf比println慢近一个数量级。我个人测试了浮点数的做法(平台为CentOS 8.2),具体做法是,对i从十万循环到0,测试性能。
    做法1:printf
    耗时:7.2 8.4 8.2 6.6 6.5 7.5
    做法2:DecimalFormat(单次new,不是网上样例代码那种一个循环一个new)
    耗时:6.0 7.1 6.7 6.4 6.1 6.5
    做法3:String.format
    耗时:7.3 6.5 5.9 5.5 5.2 5.5
    单位均为秒。
    结论:对简单格式化而言,printf的格式化操作比较慢。
    因此针对这个程序本身,我们可以猜想:printf的性能可能不如println。当然,这不是像某些人所说的那样认为printf不能用。(但我有一个猜想,printf在我的测试中是因为反复解析格式串导致的,而String.format可能因为不涉及IO缓存操作而比printf的合并操作更高效。单次操作中printf会不会没有这么大的性能开支呢?另一个猜想:格式化过程够复杂时,如果需要被格式化的值涉及多线程求值,printf也许做了额外的保障原子性的工作。)

    评论
    解决 1 无用
    打赏 举报
  • 是赵敢敢啊 2021-07-08 16:42

    提前换idea吧,用个好点的编译器这种问题直接就提示报错了,
    看起来像是个从C转过来的小伙子,
    System.out 是定义在System中的一个PrintStram类型的常量
    public final static PrintStream out = null;
    但是为什么用System.out.println()不会空指针我也不知道
    这个对象一共有个十个重载的println()方法

         * @see     java.io.PrintStream#println()
         * @see     java.io.PrintStream#println(boolean)
         * @see     java.io.PrintStream#println(char)
         * @see     java.io.PrintStream#println(char[])
         * @see     java.io.PrintStream#println(double)
         * @see     java.io.PrintStream#println(float)
         * @see     java.io.PrintStream#println(int)
         * @see     java.io.PrintStream#println(long)
         * @see     java.io.PrintStream#println(java.lang.Object)
         * @see     java.io.PrintStream#println(java.lang.String)
         */
        public final static PrintStream out = null;
    

    =============更新=======================
    https://blog.csdn.net/ljh_learn_from_base/article/details/77612936
    为什么System.out.println() 不会空指针

    评论
    解决 1 无用
    打赏 举报
  •     System.out.println("--------对整数的自增和自减--------");
     
        y=x++;
        System.out.println("y=x++的结果为:"+ x +","+y);
        y=x--;
        System.out.println("y=x--的结果为:"+ x +","+y);
        y=++x;
        System.out.println("y=++x的结果为:"+ x +","+y);
        y=--y;
        System.out.println("y=--x的结果为:"+ x +","+y);
    
    评论
    解决 无用
    打赏 举报
  • 答题大神 2021-07-08 16:33

    System.out.printf("y=x++的结果为:%d,%d \n",x,y);
    改成
    System.out.println("y=x++的结果为:"+y);
    java不需要占位符,println有换行的效果。

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题