0

我最近了解到使用会System.out.print();导致此错误:

The method print(boolean) in the type PrintStream is not applicable for the arguments ()

我在帮助别人编写代码时发现了这一点。当然,自然的问题是:为什么他们的代码中没有参数。我没有在文档中找到任何关于此案例错误的提及。

搜索我发现System.out.print(T t)为许多类型定义的文档,但是当根本不存在任何参数时,它默认为print​(boolean x). 参考

然后,它当然会抱怨该论点不适用。

我正在帮助的人是一个新的学生,他经常使用System.out.println()并且对为什么会发生这个错误感到困惑。

学生最终想要一个字符串,而该方法只是一个占位符。我解释了编译需要某种参数。

我的问题是:为什么编译器会做出这个假设并因此给出这个错误?

4

4 回答 4

3

我认为控制台切断了整个消息,当我尝试在 Intellij 中编译 System.out.print() 时,它会显示所有消息:

no suitable method found for print(no arguments)
method java.io.PrintStream.print(boolean) is not applicable
  (actual and formal argument lists differ in length)
method java.io.PrintStream.print(char) is not applicable
  (actual and formal argument lists differ in length)
method java.io.PrintStream.print(int) is not applicable
  (actual and formal argument lists differ in length)
method java.io.PrintStream.print(long) is not applicable
  (actual and formal argument lists differ in length)
method java.io.PrintStream.print(float) is not applicable
  (actual and formal argument lists differ in length)
method java.io.PrintStream.print(double) is not applicable
  (actual and formal argument lists differ in length)
method java.io.PrintStream.print(char[]) is not applicable
  (actual and formal argument lists differ in length)
method java.io.PrintStream.print(java.lang.String) is not applicable
  (actual and formal argument lists differ in length)
method java.io.PrintStream.print(java.lang.Object) is not applicable
  (actual and formal argument lists differ in length)

编译器尝试按照它们在文件中声明的顺序匹配所有方法。

于 2020-10-07T14:36:31.477 回答
1

我有同样的错误,我是这样解决的:

它是

 System.out.println("x=", x);

将其更改为:

 System.out.println("x="+ x);
于 2021-07-13T12:12:20.680 回答
1

我在尝试像这样格式化 String 时遇到了同样的错误:

System.out.println("%d %d \n", I, n);

whereI和 then都是整数。后来我意识到,println()方法不接受两个参数。那只需要一个String论据。我通过这样做纠正了这些错误;

System.out.printf("%d %d \n", I, n);

该函数printf()接受两个参数并格式化字符串。

错误看起来像这样:

Error:
|  no suitable method found for println(java.lang.String,int,int,int)
|      method java.io.PrintStream.println() is not applicable
|        (actual and formal argument lists differ in length)
|      method java.io.PrintStream.println(boolean) is not applicable
|        (actual and formal argument lists differ in length)
|      method java.io.PrintStream.println(char) is not applicable
|        (actual and formal argument lists differ in length)
|      method java.io.PrintStream.println(int) is not applicable
|        (actual and formal argument lists differ in length)
|      method java.io.PrintStream.println(long) is not applicable
|        (actual and formal argument lists differ in length)
|      method java.io.PrintStream.println(float) is not applicable
|        (actual and formal argument lists differ in length)
|      method java.io.PrintStream.println(double) is not applicable
|        (actual and formal argument lists differ in length)
|      method java.io.PrintStream.println(char[]) is not applicable
|        (actual and formal argument lists differ in length)
|      method java.io.PrintStream.println(java.lang.String) is not applicable
|        (actual and formal argument lists differ in length)
|      method java.io.PrintStream.println(java.lang.Object) is not applicable
|        (actual and formal argument lists differ in length)
|  System.out.println("%d %d %d", x, y, z);
于 2022-01-05T21:42:49.383 回答
1

%.2f每当在 print 语句中使用类似或类似的格式化方法时,请使用System.out.printf("Price:%,2f:,price)而不是System.out.println("Price:%,2f:,price). 错误得到解决。[Price:%,2f:,price]只是您的打印语句中使用的格式化语句的一个示例。

于 2021-09-30T05:44:14.167 回答