AJUDA - java: illegal start of expression - Deveria funcionar não sei o que acontece !? [RESOLVIDO]

Galera Boa Tarde !
O Codigo deveria funcionar tenho uma função sem retorno para operacoesContabank entretanto ele esbarra na invocação do objetio que vai receber o parametro operacoesContabank(contabank); não entendi !
Alguém pode me ajudar com isso ?

package co.javabank.bank;

import java.io.IOException;
import java.util.InputMismatchException;
import java.util.Scanner;

public class Javabank {

    public static void main(String[] args) {
        Scanner entradados = new Scanner(System.in);
        Bancos santander = new Bancos("0001");
        // C = CRIAR CONTA
        // E = SAIR (EXIT)

        while (true) {
            System.out.println("O que deseja fazer ? C=Criar conta, E=Sair do Programa");
            String operacoes = entradados.nextLine();

            if (operacoes.equals("C")) {
                System.out.println("Digite o seu nome:");
                String usuario = entradados.nextLine();
                Contabank contabank = santander.geracaoContabank(usuario);
                santander.entradadosContabank(contabank);
                operacoesContabank(contabank);
            } else if (operacoes.equals("E")) {
                break;
            } else {
                System.out.println("Comando inválido, tente novamente");
            }
        }
        Contabank contabank = new Contabank("0001", "1234", "JAVABANK");
        // D =  DEPOSITAR
        // S =  SACAR
        // E =  SAIR

        double valor = 0;


        static void operacoesContabank(Contabank contabank) {

            entradados = new Scanner(System.in);
            while (true) {

                System.out.println("O que deseja fazer ? D = Deposito , S = Saque, E = Sair da Conta");
                String operacoes = entradados.nextLine();

                if (operacoes.equals("D")) {
                    System.out.println("Qual valor deseja depositar ?");
                    valor = entradados.nextDouble();
                    contabank.depositar(valor);
                } else {
                    if (operacoes.equals("S")) {
                        System.out.println("QUAL VALOR DESEJA SACAR");
                        valor = entradados.nextDouble();

                        if (!contabank.sacar(valor)) {
                            System.out.println("ONps ! fOI POSSOIVEL SAQUE !" + valor);
                        }

                    } else if (operacoes.equals("E")) {
                        System.out.println("PROGRAMA FINALIZADO !");
                        System.exit(1);
                        break;

                    }
                }

            }
        }
    }


}

No compilador mostra Java:illegal start of expression

Seu método main() não tem a chave "}" em seu final. Por causa disso a sintaxe está errada. O compilador não entende um método dentro do outro.

Dica: O compilador sempre mostra a linha de onde ele encontrou o problema.

método main() não tem a chave "}

O erro é na linha 39 ?

  static void operacoesContabank (Contabank contabank){

as chaves estão alinhadas onde você poderia apontar ?

Parece que vc está criando um método estático dentro do método main, e as chaves estão todas bagunçadas.

Organize quais métodos vc quer ter primeiro, e depois faça a implementação. Tipo assim:

public class Javabank {

    public static void main(String[] args) {
        // implementação
    }

    private static void operacoesContabank(Contabank contabank) {
        // implementação
    }
}

O que não entendo é se faço isso quebra todo o codigo, você chegou a compilar ? Online Java - IDE, Code Editor, Compiler

Não sei o que acontece !

O seu código está estruturado assim:

public class Javabank {
    
    public static void main(String[] args) {
        // código omitido

        while (true) {
            // código omitido
        }
        
        // código omitido

        static void operacoesContabank(Contabank contabank) {
            // código omitido

            while (true) {
                // código omitido
            }
        }
    }
}

Repare que o método operacoesContabank está no lugar errado. Essa é a primeira coisa a ser corrigida.

Outro ponto é que, depois do primeiro while (true), é criado um Contabankque não é usada, junto com uma declaração de um double, logo antes da declaração do método operacoesContabank:

Contabank contabank = new Contabank("0001", "1234", "JAVABANK");
// D =  DEPOSITAR
// S =  SACAR
// E =  SAIR

double valor = 0;

Essa parte não está fazendo sentido no lugar onde está no código.

1 curtida

Isso mesmo, isso aqui esta a mais e não tinha reparado , agora só falta ascender o paramentro:

static void operacoesContabank(Contabank contabank)

Consegui estava também fechando a Chave com o static void operacoesContabank(Contabank contabank) , dentro do public static void main, o que não é permitido já que um static chama o outro , obrigado deu certo !

1 curtida

@JavaGoogle Foi isso que eu tentei explicar na minha resposta.

1 curtida