java方法执行没有参数或返回

时间:2014-11-10 01:24:43

标签: java methods

我遇到的问题是这个程序中的最后一个方法。我无法让它执行正确执行所需的消息。 最后一个方法,displayData需要在方法中显示带有getLength,getWidth和getArea变量的消息,而不是main。我该怎么做才能显示变量?

//Gabby
import java.util.Scanner;

public class AreaRectangle
{
   public static void main(String[] args)
   {
      double length = getLength();
      double width = getWidth();
      double area = getArea(length, width);
      displayData(double l, double w, double a);
   }
   public static double getLength()
   {  
      Scanner keyboard = new Scanner(System.in);
      double l;
      System.out.print("Please enter a value for length: ");
      l = keyboard.nextDouble();
      return l;
   }
   public static double getWidth()
   {
      Scanner keyboard = new Scanner(System.in);
      double w;
      System.out.print("Please enter a value for width: ");
      w = keyboard.nextDouble();
      return w;
   }
   public static double getArea(double length, double width)
   {
      double a;
      a = length * width;
      return a;
   }    
   public static void displayData(l, w, a)
   {
      System.out.print("Length is: " + l);
      System.out.print("Width is: " + w);
      System.out.print("Area is: " + a);
   }

}

错误讯息:

 ----jGRASP exec: javac -g AreaRectangle.java

AreaRectangle.java:11: error: '.class' expected
      displayData(double l, double w, double a);
                         ^
AreaRectangle.java:11: error: ';' expected
      displayData(double l, double w, double a);
                          ^
AreaRectangle.java:11: error: <identifier> expected
      displayData(double l, double w, double a);
                                     ^
AreaRectangle.java:11: error: not a statement
      displayData(double l, double w, double a);
                                             ^
AreaRectangle.java:11: error: ';' expected
      displayData(double l, double w, double a);
                                              ^
AreaRectangle.java:35: error: <identifier> expected
   public static void displayData(l, w, a)
                                   ^
AreaRectangle.java:35: error: <identifier> expected
   public static void displayData(l, w, a)
                                      ^
AreaRectangle.java:35: error: <identifier> expected
   public static void displayData(l, w, a)
                                         ^
8 errors

 ----jGRASP wedge2: exit code for process is 1.
 ----jGRASP: operation complete.

8 个答案:

答案 0 :(得分:1)

更一般地说,方法声明有六个组件,依次为:

  

<强> 1 即可。修改器 - 例如公共,私人和其他您将在稍后了解的内容。

     

<强> 2 即可。返回类型 - 方法返回的值的数据类型,如果方法未返回值,则返回void。

     

第3 即可。方法名称 - 字段名称的规则也适用于方法名称,但约定略有不同。

     

<强> 4 即可。括号中的参数列表 - 以逗号分隔的输入参数列表,以其数据类型开头,括起来   括弧, ()。如果没有参数,则必须使用空   括号中。

     

<强> 5 即可。一个例外列表 - 稍后将讨论。

     

<强> 6 即可。括在括号之间的方法体 - 方法的代码,包括局部变量的声明,就在这里。

在此处的方法声明中

public static void displayData(l, w, a){

您忘记应用通用规则的第4步

 public static void displayData(double l, double w, double a){

注意:覆盖toString方法

是否合适

答案 1 :(得分:1)

当我们调用一个方法时,我们不指定参数类型,我们在主方法中传递值:左替换它: displayData(double l,double w,double a);
由此: displayData(长度,宽度,面积);

同时在显示数据方法声明中执行以下操作:
替换这个:

public static void displayData(l, w, a)
   {
      System.out.print("Length is: " + l);
      System.out.print("Width is: " + w);
      System.out.print("Area is: " + a);
   }

由此:

public static void displayData(double l, double w, double a)
   {
      System.out.print("Length is: " + l);
      System.out.print("Width is: " + w);
      System.out.print("Area is: " + a);
   }

/!\ 你必须注意 - 阅读以下内容 /!\


主要方法是静态的,当你把代码放入其中时,main方法中调用的所有外部成员都必须是静态的,最好的方法是这样的:

    import java.util.Scanner;
    public class AreaRectangle {

      public AreaRectangle() {
       //Call all methods you want
         double length = getLength();
         double width = getWidth();
         double area = getArea(length, width);
         displayData(length, width, area);
      }

      public double getLength() {  
        Scanner keyboard = new Scanner(System.in);
        double l;
        System.out.print("Please enter a value for length: ");
        l = keyboard.nextDouble();
        return l;
      }

      public double getWidth() {
        Scanner keyboard = new Scanner(System.in);
        double w;
        System.out.print("Please enter a value for width: ");
        w = keyboard.nextDouble();
        return w;
      }
      public double getArea(double length, double width) {
        double a;
        a = length * width;
        return a;
      }    
      public void displayData(double l, double w, double a) {
        System.out.print("Length is: " + l);
        System.out.print("Width is: " + w);
        System.out.print("Area is: " + a);
      }

      public static void main(String[] args){
        new AreaRectangle();
      }
    }



请记住,在静态上下文(主要方法)中,您只能调用静态成员 如果您这样做,则不需要在所有类成员中使用static关键字。祝你好运。

答案 2 :(得分:0)

不要传递它们的类型,只传递变量名。

public static void main(String[] args)
{
  double length = getLength();
  double width = getWidth();
  double area = getArea(length, width);
  displayData(length, width, area);
}

displayData()的签名应改为:

public static void displayData(double l, double w, double a);

答案 3 :(得分:0)

您需要调用displayData(length, width, area);之类的方法,并将其定义为public static void displayData(double l, double w, double a) {...}

答案 4 :(得分:0)

public static void displayData(l, w, a)

在java中,您需要为方法中的每个参数提供一个类型,这不是JavaScript:)

答案 5 :(得分:0)

以下是错误。方法签名未正确定义。

1。)displayData(length, width, area);

2。)public static void displayData(double l, double w, double a) {

 public static void main(String[] args) {
        double length = getLength();
        double width = getWidth();
        double area = getArea(length, width);
        displayData(length, width, area);
    }

    public static double getLength() {
        Scanner keyboard = new Scanner(System.in);
        double l;
        System.out.print("Please enter a value for length: ");
        l = keyboard.nextDouble();
        return l;
    }

    public static double getWidth() {
        Scanner keyboard = new Scanner(System.in);
        double w;
        System.out.print("Please enter a value for width: ");
        w = keyboard.nextDouble();
        return w;
    }

    public static double getArea(double length, double width) {
        double a;
        a = length * width;
        return a;
    }

    public static void displayData(double l, double w, double a) {
        System.out.print("Length is: " + l);
        System.out.print("Width is: " + w);
        System.out.print("Area is: " + a);
    }

答案 6 :(得分:0)

将您的方法更改为此

 public static void displayData(double l, double w, double a)
   {
      System.out.print("Length is: " + l);
      System.out.print("Width is: " + w);
      System.out.print("Area is: " + a);
   }

然后在你的主要做这个

displayData(length, width, area);

答案 7 :(得分:0)

您的正式参数和实际参数混在一起。 形式参数包含每个参数的类型,而实际参数是您传递的实际值。

当您调用方法时,需要实际参数(类型可以省略)。因此:

displayData(double l, double w, double a);

应改为:

displayData(length, width, area);

定义方法时,使用形式参数。这样:

public static void displayData(l, w, a)
应更改

以包含每个参数的类型:

public static void displayData(double l, double w, double a)