Duvida em relação a erro de excução pelo prompt(cmd)

Iniciei recentemente os estudos em java, e fiz uma calculadora simple, que no inicio só funcionava pelo cmd (usavava args[]), depois que aprendi a inserir valores(Scanner), consigo executa-la pelo intelliJ, porém agora da um erro quando tento pelo prompt, gostaria de entender o porque, acredito ser em relação ao argumento passado, mas ainda não consegui resolver:

SEGUE O CÓDIGO:

import java.util.Scanner;

public class Calculate {
    /* Opereções para inserir:
    * somar
    * subtrair
    * vezes
    * dividir
     */

    public static void main(String[] args) {
        int x;
        int y;
        String resultado;

        Scanner scanner = new Scanner(System.in);
        System.out.println("Digite o primeiro valor: ");
        x = scanner.nextInt();


        Scanner scanner1 = new Scanner(System.in);
        System.out.println("Digite o segundo valor: ");
        y = scanner.nextInt();

        Scanner scanner2 = new Scanner(System.in);
        System.out.println("Digite a operação que deseja: ");
        args[0] = scanner2.nextLine();



        if(args[0].equals("somar")) {
            sun(x, y);
        }else if(args[0].equals("subtrair")){
            minus(x,y);
        }else if (args[0].equals("vezes")) {
            multiply(x, y);
        }else if (args[0].equals("dividir")){
            division(x,y);
        }else {
            System.out.println(" ERRO :Nenhuma Instrução Definida!");
        }
    }

    static void sun(int x, int y){
        System.out.println("A soma dos números inseridos é igual a: " + (x + y));
    }

    static void minus(int x, int y){
        System.out.println("A subtração dos números inseridos é igual a: " + (x - y));
    }

    static void multiply(int x, int y){
        System.out.println("A multiplicação dos números inseridos é igual a: " + (x * y));
    }

    static void division(int x, int y){
        System.out.println("A divisão dos números inseridos é igual a: " + (x / y));
    }
}

pelo prompt ele permite que insira os valores e escolha a operação, mas quando dou enter ele da o erro:

"Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0 at Calculate.main(Calculate.java:28)"

PS: lembrei de compilar o arquivo pelo prompt antes de executa-lo
Se alguem puder me ajudar a entender o erro, eu ficarei grato.
Abraço

Vc não pode fazer isso. A variável args serve apenas para receber os argumentos da aplicação quando ele é executa pela linha de comando, ao não informar nenhum argumento, o array args virá vazio, ou seja, a posição 0 não existe nele, e é por isso que ocorre o erro.

1 curtida

É que o primeiro exemplo, foi numa video aula, ai foi passado dessa forma com o uso do args[0], e ai só usava o prompt pra executar.
Quando fui implementar o uso da classe Scanner, que me deparei com esse problema
No caso seria só substituir o args[0] pela String resultado ?

Obrigado a atenção @Lucas_Camara

Opa, problema resolvido. Eu tirei o args[0] e coloquei a var String resultado. E agora estou conseguindo executar tanto pelo IntelliJ quanto pelo prompt
obrigado

1 curtida