возникли некоторые проблемы с возвратом в java

#java

#java

Вопрос:

 import java.util.Scanner;

public class Insurance
{
   public static void main(String[] args)
      {
         Scanner scan = new Scanner(System.in);
         
         System.out.println("Enter current year: ");
         int CurrentYear = scan.nextInt();
        
         System.out.println("Enter birth year: ");
         int BirthYear = scan.nextInt();
         
         System.out.println("Premium amount is: $"   PremiumAmount);
         
         calculatePremium(CurrentYear, BirthYear);
       }
         public static int calculatePremium(int CurrentYear, int BirthYear)
            {
               int decade = (CurrentYear - BirthYear)/10;
               
               double PremiumAmount = (decade  15)*20;
               
               return PremiumAmount;
             }
        }
  

ошибка: не удается найти символ PremiumAmount.
System.out.println(«Сумма премии составляет: $ » PremiumAmount);
^

заранее спасибо и извините, если это глупый вопрос.

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

1. Подсказка: вы определили PremiumAmount в локальной области для метода метода calculatePremium() . Как он будет доступен из другого метода? Вы можете запустить его в режиме отладки и сможете самостоятельно разобраться.

Ответ №1:

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

Ошибки «Не удается найти символ» обычно возникают при попытке ссылаться на необъявленную переменную в вашем коде. Ошибка «Не удается найти символ» означает, что компилятор не может этого сделать. Похоже, что ваш код ссылается на что-то, что компилятор не понимает.

Вы не объявили свой PremiumAmount в функции main, вы только объявили его в calculatePremium, к которому нельзя получить доступ из main. Поскольку метод calculatePremium возвращает значение для PremiumAmount, вы можете попробовать представить его следующим образом

 System.out.println("Premium amount is: $"   calculatePremium());
  

И не забудьте удалить строку под ним.

Ответ №2:

Значение PremiumAmount доступно только в рамках метода calculatePremium.Он недоступен в основном методе. Пожалуйста, измените свой код в методе main:

     System.out.println("Premium amount is: $"   calculatePremium(CurrentYear, BirthYear));
     
  

Ответ №3:

Я рекомендую ознакомиться с «областью действия» в Java. (https://www.w3schools.com/java/java_scope.asp ) Вы получаете эту ошибку, потому что переменная PremiumAmount существует только в области второго метода. У вас также есть метод calculatePremium, возвращающий значение int, когда оно должно быть double . Я исправил эти ошибки и отступ. Старайтесь разделять методы, это помогает понять сложный код.

 public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);

    System.out.println("Enter current year: ");
    int CurrentYear = scan.nextInt();

    System.out.println("Enter birth year: ");
    int BirthYear = scan.nextInt();

    double PremiumAmount = calculatePremium(CurrentYear, BirthYear);

    System.out.println("Premium amount is: $"   PremiumAmount);

}

public static double calculatePremium(int CurrentYear, int BirthYear) {
    int decade = (CurrentYear - BirthYear)/10;

    double PremiumAmount = (decade  15)*20;

    return PremiumAmount;
}
  

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

1. Вы также можете сократить второй метод, удалив строку, в которой вы объявляете PremiumAmount (внизу), и поместив математику с переменной decade в строку возврата.