Как правильно инициализировать переменную, созданную в отдельном методе, для использования в другом методе? - PullRequest
0 голосов
/ 01 октября 2019

Я сделал два метода, которые принимают пользовательский ввод, и должен возвращать две отдельные переменные, которые я хочу вызвать в третьем методе. Однако я не совсем понимаю, как «связать» переменные в третий метод. Также необходимо, чтобы я держал все три метода отдельно, метод calculate, askLen и askWid.

Я пробовал несколько вещей, таких как объявление целых чисел в разных местах, используя final int, или long, double и т. д.

 public static void main (String[] p)
  {
     askLen();
     askWid();
     calculate();
     System.exit(0);
  }

  public static int askLen ()
  {
     final int len;    
     Scanner scanner = new Scanner(System.in);
     System.out.println("What is the length of the room (in cm)?");
     len = Integer.parseInt(scanner.nextLine());
     final long l=len;
     return len;
  }

  public static int askWid ()
  {
     final int wid;    
     Scanner scanner = new Scanner(System.in);
     System.out.println("What is the width of the room (in cm)?");
     wid = Integer.parseInt(scanner.nextLine());
     final long w=wid;
     return wid;
  }

  public static int calculate ()
  {
     final int len;
     final long l;
     final int wid;
     final long w;   
     long area = (l * w) / 10000;
     System.out.println("The area is " + area + "m^2");
     double wastage = (area * 1.10) / 100;
     System.out.println("The extra you need for wastage is " + wastage + "m^2");
     double areaTotal = area + wastage;
     System.out.println("The total flooring area to order is: " + areaTotal + "m^2");
     return 1;
  }

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

Сообщения об ошибках, которые я получаю во время компиляции:

flooring.java:46: error: variable l might not have been initialized
         long area = (l * w) / 10000;
                      ^
flooring.java:46: error: variable w might not have been initialized
         long area = (l * w) / 10000;
                          ^
2 errors

1 Ответ

2 голосов
/ 01 октября 2019

Почему бы просто не передать переменные в методы? Что-то вроде:

 public static void main (String[] p)
  {
     int length = askLen();
     int width = askWid();
     calculate(length, width);
     System.exit(0);
  }

  public static int askLen ()
  {
     final int len;    
     Scanner scanner = new Scanner(System.in);
     System.out.println("What is the length of the room (in cm)?");
     len = Integer.parseInt(scanner.nextLine());
     final long l=len;
     return len;
  }

  public static int askWid ()
  {
     final int wid;    
     Scanner scanner = new Scanner(System.in);
     System.out.println("What is the width of the room (in cm)?");
     wid = Integer.parseInt(scanner.nextLine());
     final long w=wid;
     return wid;
  }

  public static void calculate (int len, int wid)
  {
     long area = (len * wid) / 10000;
     System.out.println("The area is " + area + "m^2");
     double wastage = (area * 1.10) / 100;
     System.out.println("The extra you need for wastage is " + wastage + "m^2");
     double areaTotal = area + wastage;
     System.out.println("The total flooring area to order is: " + areaTotal + "m^2");
  }

Кроме того, в calculate() переменные l и w никогда не устанавливаются на что-либо, что приводит к ошибке. Передавая переменные, вам не нужно устанавливать / использовать l или w, и вместо этого вы можете использовать переменные, переданные в скобках wid и len. Вам также не нужно возвращать тип или возвращать calculate(), если только вам не нужно сохранить значение в переменной, откуда вы вызываете метод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...