как передать значение из одного метода в другой

#java

Вопрос:

Я пытаюсь передать значение цены из приведенного ниже метода в другой метод, чтобы я мог вычесть из него, например, я хочу сделать еще два метода, один из которых вычитает 3 из двойной цены, и другой метод, который вычитает 4 из цены в зависимости от ответа пользователя на операторы if-else

 public static double parkingPrice(double price){   int hours = inputInt("How many hours would you like to park? from 1 hour to 8 hours. ");   if(hoursgt;=7 amp;amp; hourslt;9){  price = 5.50;  }   else if (hours gt;=5 amp;amp; hourslt;9){  price = 4.50;  }   else if (hours gt;=2 amp;amp; hourslt;9){  price = 4.00;  }  else if (hours == 1 amp;amp; hourslt;9) {  price = 3.00;  }  else {  System.out.println("Unvalid number please enter between 1 and 8.");  }  return price; }  

приношу извинения за основной вопрос, я очень новичок в программировании!

отредактируйте, чтобы показать, как я пытаюсь вызвать этот метод в другой

 public static void calculate(){  double price;  price = parkingPrice(price); }  

Комментарии:

1. Я действительно не понимаю , вы знаете, как написать метод, но не называть его ?

2. в этом методе вы видите, что я возвращаю цену, однако, когда я пытаюсь вызвать цену другим методом, кажется, что он не распознает значение цены

3. какое исключение вы получаете?

4. вы можете создать переменную, которая будет получать возвращаемое значение из вашего метода, например : double calculatedPrice = ClassName.parkingPrice(1.0);

5. вы также должны удалить price параметр из своего метода, он не служит для pupose.

Ответ №1:

Вы должны использовать Exception вместо печати только сообщение об ошибке или вам нужно значение по умолчанию price , если hours оно неверно. Вот код, предполагающий, что вам нужны 2 разных метода, которые приведут к разным вычислениям.

 public static double parkingPrice() throws Exception {  int hours = inputInt("How many hours would you like to park? from 1 hour to 8 hours. ");  if(hoursgt;=7 amp;amp; hourslt;9){  return 5.50;  }  else if (hours gt;=5 amp;amp; hourslt;9){  return 4.50;  }  else if (hours gt;=2 amp;amp; hourslt;9){  return 4.00;  }  else if (hours == 1) {  return 3.00;  }  else {  throw new Exception("Unvalid number please enter between 1 and 8.");  } }  public static double subtractsThree() throws Exception {  return parkingPrice() - 3; }  public static double subtractsFour() throws Exception {  return parkingPrice() - 4; }  

Ответ №2:

Я думаю, что вы на самом деле не понимаете, как работают параметры. Вы должны ввести там фактические значения.

В вашем коде

 public static void calculate(){  double price;  price = parkingPrice(price); }  

вы не передаете значение, потому что цена еще не инициализирована. Вы могли бы сделать либо

 public static void calculate(){  double price = 0;  price = parkingPrice(price); }  

или

 public static void calculate(){  double price = parkingPrice(0); }  

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

 public static void calculate(){  double price = parkingPrice(); }  

Ответ №3:

Я думаю, что вы ищете, чтобы передать час в метод, а затем вернуть цену, которая идет вместе с ним:

 public static void calculate(){  int hours = inputInt("How many hours would you like to park? from 1 hour to 8 hours. ");  if (hours lt; 1 || hours gt; 8) {  System.out.println("Unvalid number please enter between 1 and 8.");  }  else {  double price = parkingPrice(hours);  //do something with price here...  } }  public static double parkingPrice(int hours){   double price = 0;  if(hoursgt;=7 amp;amp; hourslt;9){  price = 5.50;  }   else if (hours gt;=5 amp;amp; hourslt;9){  price = 4.50;  }   else if (hours gt;=2 amp;amp; hourslt;9){  price = 4.00;  }  else if (hours == 1 amp;amp; hourslt;9) {  price = 3.00;  }  return price; }