Не могу понять, как вернуть значение - PullRequest
0 голосов
/ 15 сентября 2018

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

Что я здесь не так делаю?Я очень новичок и похоже, что это должно работать.Я просто не знаю, что я делаю не так.Это моя ошибка

public class Test
{
    public static long calculate(long n)
    {   
        n = args[0];
        return n;
    }   
    public static void main(String[] args)
    {       
        long answer;
        answer = calculate();       
    }   
}

Исключение:

Test.java:6: error: cannot find symbol
                n = args[0];
                    ^
  symbol:   variable args
  location: class Test
Test.java:13: error: method calculate in class Test cannot be applied to given types;
                answer = calculate() ;
                         ^
  required: long
  found: no arguments
  reason: actual and formal argument lists differ in length
2 errors

Ответы [ 3 ]

0 голосов
/ 15 сентября 2018

args является массивом String, локальным для метода main.

Итак, во-первых, это локальная переменная метода main, и она не видна внутри метода calculateкоторая объясняет первую ошибку: error: cannot find symbol.

Во-вторых, calculate ожидает параметр long, а вы пытаетесь указать String.Для этого вы получаете error: method calculate in class Test cannot be applied to given types;

Так что передайте args[0] в calculate после преобразования его в long в качестве параметра.

public class Test
{
    public static long calculate(long n)
    {   
        return n;
    }   
    public static void main(String[] args)
    {       
        long answer = 0L;
        try{
            answer = calculate(Long.parseLong(args[0]));
        }catch (ArrayIndexOutOfBoundsException ae){
            ae.printStackTrace();
        }catch (NumberFormatException nfe){
            nfe.printStackTrace();
        }
        System.out.println(answer);      
    }   
}
0 голосов
/ 15 сентября 2018

Ниже код может решить вашу проблему

public class Test
{
    public static long calculate(String[] args)
    {
        long n = Long.parseLong(args[0]);
        return n;
    }
    public static void main(String[] args)
    {
        long answer;
        answer = calculate(args);
    }
}
0 голосов
/ 15 сентября 2018

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

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

 public static void main(String[] args)
    {       
        long answer;
        answer = Long.parseLong(args[0]);       
    }  

Оба кода будут выполнять одну и ту же работу.

...