确定矩形面积的多种方法

时间:2015-04-10 17:46:45

标签: java methods computer-science

我真正坚持的问题是:

编写一个程序,要求用户输入矩形的宽度和长度,然后显示矩形的区域。该程序应调用以下方法:

•getLength - 此方法应要求用户输入矩形的长度,然后将该值作为double返回。

•getWidth - 此方法应要求用户输入矩形的宽度,然后将该值作为double返回。

•getArea - 此方法应接受矩形的长度和宽度作为参数,并返回矩形的区域。该区域的计算方法是将长度乘以宽度。

•displayArea - 此方法应接受矩形的长度,宽度和区域作为参数,并将它们显示在屏幕上的相应消息中。

我不知道如何填写此代码,因为我现在拥有的是:

    import java.util.Scanner;
public class WidthLengthAreaMethods
{
  public static void main(String[]args)
  {

  Scanner keyboard = new Scanner(System.in);

  double length;
  double width;
  double area;

  length = getLength();
  width = getWidth();
  area = getArea(double length, double width);
  displayData(length, width, area);
  }
  public static double getLength()
  {
    System.out.println("Enter length. ");
    length = keyboard.nextDouble();
    System.out.println("The length is " + length);
  }
  public static double getWidth()
  {
    double width;
    System.out.println("Enter width. ");
    width = keyboard.nextDouble();
    System.out.println("The width is " + width);
  }
  public static double getArea()
  {
   double length;
   double width;
   double area = length * width;

   System.out.println("The area is: " + area);
  }
  public static void displayData(double length, double width, double area)
  {
    System.out.println(" The length is: \t" + length);
    System.out.println(" The width is: \t" + width);
    System.out.println(" The area is: \t" + area);
  }
}

我搞砸了什么,我将如何解决它?我是编程的初学者,请耐心等待:D。

谢谢你们!

3 个答案:

答案 0 :(得分:2)

由于您的程序被分解为多个方法,因此每个方法中的数据都是本地的,除非您将其存储在类本身中。

例如,getLength()和getWidth()的辅助函数将无法访问键盘扫描程序,除非您在main方法之外声明它,如下所示:

import java.util.Scanner;

public class WidthLengthAreaMethods {

    Scanner keyboard = new Scanner( System.in ); 
    // Initialized within the class, but outside of any methods

    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 ){}

将扫描程序单独传递给每个函数会使您的方法按预期工作,第一个选项稍微更具可读性。

要考虑的另一件事是,当一个方法有一个返回值时,例如getLength(),getWidth()和getArea()的情况下,调用该函数的代码片段需要一些变量要返回的那种类型。对于void函数(例如main()或displayData()),该方法声明它不会返回任何特定类型的变量。

因此,当您将length设置为等于getLength()时,您要做的是将本地长度变量的值设置为等于从辅助函数返回的值。如果永远不会发送该值,程序很可能无法编译 - 当您尝试调用该函数时,将会抛出一个错误,指出“预期类型为double”的行。要修复编译器错误,需要将一个return语句添加到辅助函数中,例如:

  Scanner keyboard = new Scanner( System.in );

  public static double getWidth() {

    System.out.println("Enter width.");
    double width = keyboard.nextDouble(); // Sets the value to return to your main function
    System.out.println("The width is " + width);
    return width; // Returns the value to your main function 
                  // Causes any code underneath the return statement to be ignored
  }

结合所有这些应该允许编译器错误停止,并使程序正常工作。

答案 1 :(得分:1)

这是工作解决方案

import java.util.Scanner;

public class WidthLengthAreaMethods {

      public static void main(String[]args)
      {


      double length;
      double width;
      double area;

      length = getLength();
      width = getWidth();
      area = getArea(length, width);
      displayData(length, width, area);
      }

      public static double getLength()
      {
        Scanner keyboard = new Scanner(System.in);
        System.out.println("Enter length. ");
        double length = keyboard.nextDouble();
        System.out.println("The length is " + length);
        return length;
      }
      public static double getWidth()
      {
        Scanner keyboard = new Scanner(System.in);
        double width;
        System.out.println("Enter width. ");
        width = keyboard.nextDouble();
        System.out.println("The width is " + width);
        return width;
      }

      public static double getArea(double length, double width)
      {
       double area = length * width;
       System.out.println("The area is: " + area);
       return area;
      }

      public static void displayData(double length, double width, double area)
      {
        System.out.println(" The length is: \t" + length);
        System.out.println(" The width is: \t" + width);
        System.out.println(" The area is: \t" + area);
      }
    }

答案 2 :(得分:1)

您必须创建class,getter和setter方法以使用类确定矩形区域。这是代码,

// this is class which gets and sets the value as well as calculate area
public class RectangleShape 
{
    private double length;
    private double width;

    public void setLength(double len)
    {
        length = len;
    }

    public void setWidth(double wid)
    {
        width = wid;
    }

    public double getLength()
    {
        return length;
    }

    public double getWidth()
    {
        return width;
    }

    public double getArea()
    {
        return length * width;
    }
}

// main method
import java.util.Scanner;

public class FindArea 
{
    public static void main(String[] args) 
    {
        RectangleShape rs = new RectangleShape();
        Scanner sc = new Scanner(System.in);
        System.out.println("Please enter the length : ");
        double a = sc.nextDouble();
        rs.setLength(a);
        System.out.println("Please enter the width : ");
        double b = sc.nextDouble();     
        rs.setWidth(b);

        System.out.println("Length of rectangle is : " + rs.getLength());
        System.out.println("Width of rectangle is : " + rs.getWidth());
        System.out.println("Area of rectangle is : " + rs.getArea());
        sc.close();
    }
}