Probablemente esto se rechazará, así que si me rechaza, ¿puede proporcionarme un enlace a donde puedo encontrar esto?

¿Qué estoy haciendo mal aquí? Soy muy nuevo y parece que esto debería funcionar. Simplemente no sé qué estoy haciendo mal. Este es mi error

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

Excepción:

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
-1
Firehawk 15 sep. 2018 a las 07:55

3 respuestas

La mejor respuesta

args es una matriz String local para el método main.

En primer lugar, es una variable local del método main y no es visible dentro del método calculate que explica el primer error: error: cannot find symbol.

En segundo lugar, calculate espera un parámetro long y está intentando proporcionar un String. Por eso estás obteniendo error: method calculate in class Test cannot be applied to given types;

Entonces, pase args[0] a calculate después de convertirlo a long como parámetro.

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);      
    }   
}
1
Fullstack Guy 15 sep. 2018 a las 05:34

En toda la clase no hay una variable de instancia definida con args con nombre , la variable que está intentando utilizar es un parámetro en el método principal y accesible solo dentro del método principal .

Al considerar su código, no hace nada dentro del cálculo para que pueda escribir el método principal de la siguiente manera:

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

Ambos códigos harán el mismo trabajo.

0
Vivek Pakmode 15 sep. 2018 a las 05:13

El siguiente código puede resolver su problema

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
Tayyab Amin 15 sep. 2018 a las 05:45