【问题标题】:What causes "'void' type not allowed here" error是什么导致“此处不允许'void'类型”错误
【发布时间】:2022-05-05 09:02:58
【问题描述】:

当我尝试编译这个时:

import java.awt.* ;

    class obj
    {
        public static void printPoint (Point p) 
        { 
            System.out.println ("(" + p.x + ", " + p.y + ")"); 
        }
        public static void main (String[]arg)
        {
            Point blank = new Point (3,4) ; 
            System.out.println (printPoint (blank)) ;
        }
    }

我得到这个错误:

obj.java:12: 'void' type not allowed here
        System.out.println (printPoint (blank)) ; 
                                               ^
1 error

我真的不知道如何开始询问这个问题,除了问:

  • 这里出了什么问题?
  • 此错误消息是什么意思?

【问题讨论】:

    标签: java


    【解决方案1】:

    如果方法返回void,则没有可打印的内容,因此出现此错误消息。由于 printPoint 已经将数据打印到控制台,您应该直接调用它:

    printPoint (blank); 
    

    【讨论】:

      【解决方案2】:

      您正在尝试打印printPoint 的结果,它不会返回任何内容。您将需要更改您的代码以执行以下两项操作:

      class obj
      {
          public static void printPoint (Point p) 
          { 
              System.out.println ("(" + p.x + ", " + p.y + ")"); 
          }
          public static void main (String[]arg)
          {
              Point blank = new Point (3,4) ; 
              printPoint (blank) ;
          }
      }
      

      或者这个:

      class obj
      {
          public static String printPoint (Point p) 
          { 
              return "(" + p.x + ", " + p.y + ")"; 
          }
          public static void main (String[]arg)
          {
              Point blank = new Point (3,4) ; 
              System.out.println (printPoint (blank)) ;
          }
      }
      

      【讨论】:

        【解决方案3】:

        类型问题是println 需要一个字符串来打印,但是您调用的是返回voidprintPoint 方法而不是字符串。

        您可以在 main 函数中调用 printPoint(blank); 并保留它。

        【讨论】:

          【解决方案4】:

          您正在将 printPoint() 的结果(无效)传递给 println() 函数。

          【讨论】:

            【解决方案5】:

            printPoint 自己打印而不是返回字符串。在没有System.out.println 的情况下修复该调用printPoint(空白)。

            更好的选择可能是:使printPoint(Point p) 返回一个字符串(并将其名称更改为FormatPoint 之类的名称),这样该方法可用于为控制台、GUI、打印等设置点格式而不是被绑定到控制台。

            【讨论】:

              【解决方案6】:

              您可能想做:printPoint (blank);。看起来您正在尝试打印两次;一次进入printPoint(),一次进入main()

              【讨论】:

                【解决方案7】:
                import java.awt.* ;
                 
                class Main
                {
                    public static void printPoint (Point p) 
                    { 
                        System.out.println ("(" + p.x + ", " + p.y + ")"); 
                    }
                    public static void main (String[]arg)
                    {
                        Point blank = new Point (3,4) ; 
                         printPoint (blank) ;
                    }
                }
                

                //你不能在函数中不返回任何东西的情况下打印值试试这个

                【讨论】:

                  猜你喜欢
                  • 2015-01-18
                  • 1970-01-01
                  • 1970-01-01
                  • 2017-04-03
                  • 2015-12-20
                  • 2012-01-30
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多