Несколько методов определения площади прямоугольника

1

Вопрос, который я действительно застрял, заключается в следующем:

Напишите программу, которая просит пользователя ввести ширину и длину прямоугольника, а затем отобразить область прямоугольников. Программа должна вызывать следующие методы:

• getLength - этот метод должен попросить пользователя ввести длину прямоугольников, а затем вернуть это значение как двойное.

• getWidth - этот метод должен попросить пользователя ввести ширину прямоугольников, а затем вернуть это значение как двойное.

• 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.

Спасибо, парни!!

  • 0
    Что вы ожидаете от этого кода, и что он делает вместо этого? Какой у тебя конкретный вопрос? Принимает ли ваш getArea () ширину и высоту в качестве аргументов по запросу? Что говорит компилятор? Вы прочитали сообщение об ошибке? Потому что они предназначены для чтения.
  • 1
    Я предполагаю, что это не скомпилируется? Сигнатура метода (на данный момент забывающая о static) public static double getLength() означает, что метод будет возвращать double значение при его вызове и, в зависимости от вашего кода, назначит его переменной. Ваш метод ничего не возвращает. Поместите return length в качестве последнего выражения в методе - сделайте то же самое, что и getWidth() - посмотрите, где вы находитесь
Показать ещё 1 комментарий
Теги:
methods
computer-science

3 ответа

2

Поскольку ваша программа разбита на несколько методов, данные внутри каждого метода являются локальными, если вы не храните их внутри самого класса.

Например, ваши вспомогательные функции для getLength() и getWidth() не смогут получить доступ к сканеру клавиатуры, если вы не объявили его вне основного метода, например:

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

При прохождении Сканера в каждую функцию по отдельности, ваши методы будут работать по назначению, первый вариант немного читаем.

Другое дело, что если метод имеет возвращаемое значение, например double в случае getLength(), getWidth() и getArea(), кусок кода, вызывающий функцию, ожидает некоторую переменную этого типа для возврата. В случае функции void, такой как main() или displayData(), метод заявляет, что он не будет возвращать переменную какого-либо определенного типа.

Поэтому, когда вы устанавливаете длину равным getLength(), то, что вы пытаетесь сделать, это установить значение вашей локальной переменной длины равным значению, возвращаемому из вашей вспомогательной функции. Если это значение никогда не будет отправлено, программа, скорее всего, не сможет скомпилировать - при попытке вызвать эту функцию будет вызвана ошибка, указывающая что-то в строках "ожидаемого типа double". Чтобы исправить ошибку компилятора, оператор возврата должен быть добавлен к вспомогательным функциям, таким как:

  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

Вы должны создать методы класса, 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();
    }
}
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);
      }
    }
  • 0
    почему внизу ?? Делает то, что требуется
  • 1
    Но это не объясняет, почему код ОП неправильный, какие ошибки он допустил. Вы просто доказываете, что можете решить тривиальное задание по программированию.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню