Как использовать функции Java для написания программы, которая определяет, образуют ли 4 числа, введенные пользователем, квадрат или прямоугольник? - PullRequest
0 голосов
/ 16 апреля 2020

Я студент, изучающий онлайн-курс по компьютерному программированию. До сих пор у меня, кажется, все хорошо в течение весеннего семестра. Однако на этой неделе мне было поручено выполнить домашнее задание, предназначенное для проверки моих знаний о Java функциях. Я должен написать программу, которая просит пользователя ввести 4 целых числа, а затем определяет, образуют ли эти 4 записи квадрат или прямоугольник. Если 4 записи образуют квадрат или прямоугольник, то предполагаемая программа должна рассчитать его периметр.

Предполагается, что выходные данные соответствуют следующим стандартам:

Пример 1:

Введите сторону 1

5

Введите сторону 2

3

Введите сторону 3

3

Введите сторону 4

5

Формирует прямоугольник с периметром 16

Пример 2:

Введите сторону 1

5

Введите сторону 2

5

Введите сторону 3

5

Введите сторону 4

5

Образует квадрат с периметром 20

Пример 3:

Введите сторону 1

5

Введите сторону 2

6

Введите сторону 3

7

Введите сторону 4

8

Не образует прямоугольник или квадрат.

Я перечитал вопросы об заданиях пару раз и попробовал все, что мог вспомнить, изучая все классные задания для этого. неделя. До сих пор я мог составить только половину своей работы над такой программой:

import java.io.*;
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
    getUserInput();
    int a;
    int b;
    int c;
    int d;
int perimeter;
    boolean square = isSquare();
    boolean rect = isRectangle;
    printPerimeter();
}

System.out.println("Enter side 1: ");
a = Integer.parseInt(reader.readLine());

System.out.println("Enter side 2: ");
b = Integer.parseInt(reader.readLine());

System.out.println("Enter side 3: ");
c = Integer.parseInt(reader.readLine());

System.out.println("Enter side 4: ");
d = Integer.parseInt(reader.readLine());

if (a == c && b == d) {
    System.out.println("It is a rectangle.”);
perimeter += side;
}

else if (a == b && b == c && c == d && d == a) {
System.out.println("It is a square.”);
perimeter += side;
}
else {
    System.out.println("Incorrect. Try again.");
}

private void getUserInput() {
    System.out.println("Getting user input");
}

private boolean isSquare() {
    System.out.println("Is square?");
}

private boolean isRectangle() {
    System.out.println("Is rectangle?");
   }

private void printPerimeter() {
    System.out.println("Printing perimeter");
   }
}

Теперь мне нужно выяснить, как заставить код работать без функций в первую очередь. Затем я должен разбить код на функции. Как начать с программы, которая захватывает 4 стороны объекта от пользователя и рассчитывает периметр?

Спасибо за ваше время и внимание.

Ответы [ 2 ]

4 голосов
/ 16 апреля 2020

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

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

Начните с чего-то вроде этого:

public class SquareOrRectangle {
  public static void main( String... args ) {
    // 1. Get user input
    // 2. Determine if square
    // 3. Determine if rectangle
    // 4. Print perimeter
  }
}

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

public class SquareOrRectangle {
  public static void main( String... args ) {
    // 1. Get user input
    getUserInput();

    // 2. Determine if square
    boolean square = isSquare();

    // 3. Determine if rectangle
    boolean rect = isRectangle();

    // 4. Print perimeter
    printPerimeter();

  }

  private void getUserInput() {
    System.out.println( "Getting user input" );
  }

  private boolean isSquare() {
    System.out.println( "Is square?" );
  }

  private boolean isRectangle() {
    System.out.println( "Is rectangle?" );
  }

  private void printPerimeter() {
    System.out.println( "Printing perimeter" );
  }
}

Программа по-прежнему ничего не делает, но разбивает проблему на более мелкие этапы, которые легче решить. Важно отметить, что программа все еще компилируется и запускается. Это означает, что вы можете проверить это. Это важно, потому что вы не хотите писать огромный кусочек кода, а затем тестировать его сразу, вы хотите иметь возможность тестировать небольшие шаги, чтобы быстрее находить ошибки.

Если на каком-либо шаге вы не знаете, как решить этот шаг, разбейте его снова на маленькие шаги и повторяйте, пока у вас не появятся достаточно маленькие шаги, чтобы вы знали, как их решить.

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

0 голосов
/ 16 апреля 2020

Я думаю, что ответ @markspace очень четко обрисовывает поток. Кроме того, я думаю, что ваша постановка задачи требует, чтобы вы вычисляли периметр, только если это квадрат или прямоугольник. Поэтому не забудьте добавить этот чек:)

...