Java Erros do Compilador

Antes de rodar, o javac lê o seu código inteiro e recusa o que não segue as regras do Java. As mensagens vêm sempre em inglês (o JDK não tem tradução para o compilador) e assustam no começo, mas são poucas e se repetem muito. Aqui estão as 36 mais comuns, cada uma com o código que a provoca, a saída real do javac do JDK 25, a tradução e a correção.

Nesta página

Como ler uma mensagem do javac

$ javac Main.java
Main.java:4: error: cannot find symbol
        System.out.println(idadee);
                           ^
  symbol:   variable idadee
  location: class Main
1 error
Main.java:4
O arquivo e a linha do problema.
error: cannot find symbol
A mensagem: o tipo do erro. É ela que você procura no índice abaixo.
System.out.println(idadee);
A linha do código, copiada.
^
O "chapéu" aponta a coluna exata onde o javac percebeu o problema.
symbol / location
Detalhes extras de algumas mensagens: aqui, o que não foi encontrado e onde o javac procurou.
1 error
O total. Com erros, nenhum .class é gerado.
Três regras de ouro
  1. Corrija o primeiro erro primeiro e compile de novo. Um erro de sintaxe costuma gerar outros "em cascata", que somem sozinhos.
  2. Olhe também a linha de cima. Num ';' expected, o ; que falta é no fim da linha indicada, mas às vezes o problema real (uma chave ou aspa aberta) está antes.
  3. Com java Main.java (modo arquivo-fonte), as mensagens são as mesmas, com uma linha a mais no fim: error: compilation failed.

Para treinar a leitura com calma, veja a aula Lendo Erros do javac.

Experimente provocar: este programa compila. Troque idade por idadee no println, rode e compare a mensagem com a do exemplo acima.

public class Main {
    public static void main(String[] args) {
        int idade = 29;
        System.out.println(idade);
    }
}
public class Main {
    public static void main(String[] args) {
        int idade = 29;
        System.out.println(idadee);
    }
}

Índice

#Mensagem
1';' expected
2reached end of file while parsing
3'else' without 'if'
4unclosed string literal
5empty character literal / unclosed character literal
6illegal start of expression
7invalid method declaration; return type required
8cannot find symbol (variable)
9cannot find symbol (method)
10cannot find symbol (class)
11cannot find symbol (class string) / package system does not exist
12class X is public, should be declared in a file named X.java
13variable … is already defined in method …
14incompatible types: String cannot be converted to int
15incompatible types: possible lossy conversion from double to int
16integer number too large
17bad operand types for binary operator '&&'
18bad operand types for binary operator '=='
19int cannot be dereferenced
20'void' type not allowed here
21array required, but String found
22unexpected type (required: reference, found: int)
23incompatible types: int cannot be converted to String
24missing return statement
25variable … might not have been initialized
26unreachable statement
27non-static variable … cannot be referenced from a static context
28non-static method … cannot be referenced from a static context
29method … cannot be applied to given types
30constructor … cannot be applied to given types
31the switch expression does not cover all possible input values
32unreported exception …; must be caught or declared to be thrown
33exception … is never thrown in body of corresponding try statement
34cannot assign a value to final variable
35X is not abstract and does not override abstract method y() in Z
36… has private access in …

Sintaxe: pontuação, chaves e aspas

1. ';' expected

Este código tem um erro de propósito.

public class Main {
    public static void main(String[] args) {
        int idade = 29
        System.out.println(idade);
    }
}
$ javac Main.java
Main.java:3: error: ';' expected
        int idade = 29
                      ^
1 error

O que quer dizer: "Esperava um ;." Faltou o ponto e vírgula no fim da instrução. Repare que a seta aponta para depois do 29, e a linha informada é a do erro, não a seguinte.

Correção: Acrescente o ;: int idade = 29; Aula: Sintaxe e Estrutura.

2. reached end of file while parsing

Este código tem um erro de propósito.

public class Main {
    public static void main(String[] args) {
        System.out.println("Olá");
    }
$ javac Main.java
Main.java:4: error: reached end of file while parsing
    }
     ^
1 error

O que quer dizer: "Cheguei ao fim do arquivo enquanto lia." Alguma chave { não foi fechada: aqui, falta a } da classe.

Correção: Conte as chaves; um editor com recuo automático ajuda a ver onde falta. Acrescente a } final. Aula: Sintaxe e Estrutura.

3. 'else' without 'if'

Este código tem um erro de propósito.

public class Main {
    public static void main(String[] args) {
        int nota = 8;
        if (nota >= 7);
        {
            System.out.println("aprovado");
        } else {
            System.out.println("reprovado");
        }
    }
}
$ javac Main.java
Main.java:7: error: 'else' without 'if'
        } else {
          ^
1 error

O que quer dizer: "else sem if." O culpado é o ; logo depois do if (nota >= 7): ele encerra o if (com uma instrução vazia), o bloco { } vira um bloco solto e o else fica órfão.

Correção: Tire o ; depois do ) do if. Aula: if, else if, else.

4. unclosed string literal

Este código tem um erro de propósito.

public class Main {
    public static void main(String[] args) {
        System.out.println("Olá, Ana);
    }
}
$ javac Main.java
Main.java:3: error: unclosed string literal
        System.out.println("Olá, Ana);
                           ^
1 error

O que quer dizer: "Texto (literal de String) não fechado." Faltou a aspa do fim.

Correção: System.out.println("Olá, Ana"); Aula: Strings.

5. empty character literal / unclosed character literal

Este código tem um erro de propósito.

public class Main {
    public static void main(String[] args) {
        char letra = '';
        char inicial = 'Ana';
    }
}
$ javac Main.java
Main.java:3: error: empty character literal
        char letra = '';
                     ^
Main.java:4: error: unclosed character literal
        char inicial = 'Ana';
                       ^
Main.java:4: error: unclosed character literal
        char inicial = 'Ana';
                           ^
Main.java:4: error: not a statement
        char inicial = 'Ana';
                         ^
4 errors

O que quer dizer: Aspas simples são para um caractere: '' está vazio e 'Ana' tem três. O javac se perde e mostra erros em cascata.

Correção: Um caractere: char letra = 'A';. Texto: aspas duplas e String. Aula: char e boolean.

6. illegal start of expression

Este código tem um erro de propósito.

public class Main {
    public static void main(String[] args) {
        System.out.println("Olá");

        static void outro() {
            System.out.println("outro");
        }
    }
}
$ javac Main.java
Main.java:5: error: illegal start of expression
        static void outro() {
        ^
Main.java:9: error: class, interface, annotation type, enum, record, method or field expected
}
^
2 errors

O que quer dizer: "Início ilegal de expressão." Um método foi escrito dentro de outro (o main não foi fechado antes). O segundo erro é consequência do primeiro.

Correção: Feche o main com } antes de começar o outro método. Métodos ficam lado a lado, dentro da classe. Aula: Métodos.

7. invalid method declaration; return type required

Este código tem um erro de propósito.

public class Main {
    public static void main(String[] args) {
    }
}

class Conta {
    double saldo;

    Contas(double saldo) {
        this.saldo = saldo;
    }
}
$ javac Main.java
Main.java:9: error: invalid method declaration; return type required
    Contas(double saldo) {
    ^
1 error

O que quer dizer: "Declaração de método inválida; tipo de retorno obrigatório." O construtor foi escrito Contas, e a classe se chama Conta: para o Java, virou um método sem tipo de retorno.

Correção: O construtor tem exatamente o nome da classe: Conta(double saldo). Aula: Construtores.

Nomes: símbolos, maiúsculas e arquivos

8. cannot find symbol (variable)

Este código tem um erro de propósito.

public class Main {
    public static void main(String[] args) {
        int idade = 29;
        System.out.println(idadee);
    }
}
$ javac Main.java
Main.java:4: error: cannot find symbol
        System.out.println(idadee);
                           ^
  symbol:   variable idadee
  location: class Main
1 error

O que quer dizer: "Não encontrei o símbolo." As linhas symbol e location dizem o quê (a variável idadee) e onde procurou (na classe Main). Quase sempre é nome digitado errado ou variável declarada em outro bloco.

Correção: Corrija o nome: idade. Se o nome está certo, veja se a variável foi declarada num bloco { } que já terminou (escopo). Aula: Lendo Erros do javac.

9. cannot find symbol (method)

Este código tem um erro de propósito.

public class Main {
    public static void main(String[] args) {
        String nome = "Ana";
        System.out.println(nome.lenght());
    }
}
$ javac Main.java
Main.java:4: error: cannot find symbol
        System.out.println(nome.lenght());
                               ^
  symbol:   method lenght()
  location: variable nome of type String
1 error

O que quer dizer: O método lenght() não existe em String ("variable nome of type String").

Correção: nome.length(). Confira o nome exato na referência de String. Aula: Métodos de String.

10. cannot find symbol (class)

Este código tem um erro de propósito.

public class Main {
    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
    }
}
$ javac Main.java
Main.java:3: error: cannot find symbol
        Scanner entrada = new Scanner(System.in);
        ^
  symbol:   class Scanner
  location: class Main
Main.java:3: error: cannot find symbol
        Scanner entrada = new Scanner(System.in);
                              ^
  symbol:   class Scanner
  location: class Main
2 errors

O que quer dizer: A classe Scanner não foi encontrada (aparece duas vezes porque o nome está duas vezes na linha). Faltou o import.

Correção: Primeira linha do arquivo: import java.util.Scanner; Aula: Pacotes e import.

11. cannot find symbol (class string) / package system does not exist

Este código tem um erro de propósito.

public class Main {
    public static void main(String[] args) {
        string nome = "Ana";
        system.out.println(nome);
    }
}
$ javac Main.java
Main.java:3: error: cannot find symbol
        string nome = "Ana";
        ^
  symbol:   class string
  location: class Main
Main.java:4: error: package system does not exist
        system.out.println(nome);
              ^
2 errors

O que quer dizer: O Java diferencia maiúsculas: string não é String, e system não é System (o javac achou que system fosse um pacote).

Correção: String e System, com maiúscula. Nomes de classe sempre começam com maiúscula. Aula: Sintaxe e Estrutura.

12. class X is public, should be declared in a file named X.java

Este código tem um erro de propósito.

public class Ola {
    public static void main(String[] args) {
        System.out.println("Olá");
    }
}
$ javac Main.java
Main.java:1: error: class Ola is public, should be declared in a file named Ola.java
public class Ola {
       ^
1 error

O que quer dizer: "A classe Ola é pública e deveria estar num arquivo chamado Ola.java."

Correção: Renomeie o arquivo para Ola.java ou a classe para Main. Maiúsculas contam. Aula: Olá, Mundo.

13. variable … is already defined in method …

Este código tem um erro de propósito.

public class Main {
    public static void main(String[] args) {
        int total = 10;
        int total = 20;
    }
}
$ javac Main.java
Main.java:4: error: variable total is already defined in method main(String[])
        int total = 20;
            ^
1 error

O que quer dizer: "A variável total já foi definida no método main." Declarou duas vezes.

Correção: Para mudar o valor, só atribua: total = 20; (sem o int). Aula: Variáveis.

Tipos incompatíveis

14. incompatible types: String cannot be converted to int

Este código tem um erro de propósito.

public class Main {
    public static void main(String[] args) {
        int idade = "29";
    }
}
$ javac Main.java
Main.java:3: error: incompatible types: String cannot be converted to int
        int idade = "29";
                    ^
1 error

O que quer dizer: "Tipos incompatíveis: String não pode ser convertida para int." "29" entre aspas é texto.

Correção: Sem aspas: int idade = 29;. Se o texto vem de fora, converta: Integer.parseInt("29"). Aula: Conversão de Tipos.

15. incompatible types: possible lossy conversion from double to int

Este código tem um erro de propósito.

public class Main {
    public static void main(String[] args) {
        double media = 7.5;
        int nota = media;
    }
}
$ javac Main.java
Main.java:4: error: incompatible types: possible lossy conversion from double to int
        int nota = media;
                   ^
1 error

O que quer dizer: "Possível perda na conversão de double para int." O Java não joga fora as casas decimais sem você pedir.

Correção: Cast explícito, se a perda é aceitável: int nota = (int) media; (corta: 7). Ou (int) Math.round(media) (arredonda: 8). Aula: Conversão de Tipos.

16. integer number too large

Este código tem um erro de propósito.

public class Main {
    public static void main(String[] args) {
        long populacao = 8000000000;
    }
}
$ javac Main.java
Main.java:3: error: integer number too large
        long populacao = 8000000000;
                         ^
1 error

O que quer dizer: "Número inteiro grande demais." Um número escrito no código é int por padrão, e 8 bilhões não cabe num int (mesmo indo para um long).

Correção: Ponha L no fim: 8000000000L (ou 8_000_000_000L). Aula: int, long, short, byte.

17. bad operand types for binary operator '&&'

Este código tem um erro de propósito.

public class Main {
    public static void main(String[] args) {
        int idade = 20;
        if (idade >= 18 && "sim") {
            System.out.println("pode");
        }
    }
}
$ javac Main.java
Main.java:4: error: bad operand types for binary operator '&&'
        if (idade >= 18 && "sim") {
                        ^
  first type:  boolean
  second type: String
1 error

O que quer dizer: "Tipos de operando ruins para o operador &&." O && só junta boolean com boolean, e "sim" é String.

Correção: Compare de verdade: idade >= 18 && resposta.equals("sim"). Aula: Operadores Lógicos.

18. bad operand types for binary operator '=='

Este código tem um erro de propósito.

public class Main {
    public static void main(String[] args) {
        int quantidade = 5;
        if (quantidade == "5") {
            System.out.println("cinco");
        }
    }
}
$ javac Main.java
Main.java:4: error: bad operand types for binary operator '=='
        if (quantidade == "5") {
                       ^
  first type:  int
  second type: String
1 error

O que quer dizer: Comparar um int com uma String não faz sentido para o Java.

Correção: quantidade == 5 (número com número). Para textos, equals. Aula: Operadores de Comparação.

19. int cannot be dereferenced

Este código tem um erro de propósito.

public class Main {
    public static void main(String[] args) {
        int idade = 29;
        System.out.println(idade.length());
    }
}
$ javac Main.java
Main.java:4: error: int cannot be dereferenced
        System.out.println(idade.length());
                                ^
1 error

O que quer dizer: "int não pode ser desreferenciado": tipos primitivos (int, double, char…) não têm métodos, então não aceitam o ponto.

Correção: Converta para texto se precisar: String.valueOf(idade).length(). Aula: Tipos Primitivos.

20. 'void' type not allowed here

Este código tem um erro de propósito.

public class Main {
    static void saudar() {
        System.out.println("Olá");
    }

    public static void main(String[] args) {
        System.out.println(saudar());
    }
}
$ javac Main.java
Main.java:7: error: 'void' type not allowed here
        System.out.println(saudar());
                                 ^
1 error

O que quer dizer: "Tipo void não permitido aqui." saudar() não devolve nada, então não há o que imprimir.

Correção: Chame sozinho: saudar();. Ou faça o método devolver uma String. Aula: Valores de Retorno.

21. array required, but String found

Este código tem um erro de propósito.

public class Main {
    public static void main(String[] args) {
        String nome = "Ana";
        System.out.println(nome[0]);
    }
}
$ javac Main.java
Main.java:4: error: array required, but String found
        System.out.println(nome[0]);
                               ^
1 error

O que quer dizer: "Era preciso um array, mas encontrei uma String." Colchetes só funcionam em arrays.

Correção: nome.charAt(0). Aula: Métodos de String.

22. unexpected type (required: reference, found: int)

Este código tem um erro de propósito.

import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<int> numeros = new ArrayList<>();
    }
}
$ javac Main.java
Main.java:6: error: unexpected type
        List<int> numeros = new ArrayList<>();
             ^
  required: reference
  found:    int
1 error

O que quer dizer: Generics só aceitam tipos de referência (classes), não primitivos.

Correção: Use o wrapper: List<Integer>. Aula: Wrappers e Autoboxing.

23. incompatible types: int cannot be converted to String

Este código tem um erro de propósito.

import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<String> nomes = new ArrayList<>();
        nomes.add(42);
    }
}
$ javac Main.java
Main.java:7: error: incompatible types: int cannot be converted to String
        nomes.add(42);
                  ^
Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output
1 error

O que quer dizer: A lista é de String e recebeu um int. É o generics protegendo você.

Correção: nomes.add("42"), ou uma List<Integer> se forem números. Aula: Generics.

Métodos, variáveis e fluxo

24. missing return statement

Este código tem um erro de propósito.

public class Main {
    static String situacao(double nota) {
        if (nota >= 7) {
            return "aprovado";
        } else if (nota < 7) {
            return "reprovado";
        }
    }

    public static void main(String[] args) {
        System.out.println(situacao(8));
    }
}
$ javac Main.java
Main.java:8: error: missing return statement
    }
    ^
1 error

O que quer dizer: "Falta a instrução return." O método promete devolver uma String, e o javac não tem certeza de que todo caminho termina num return (ele não deduz que >= 7 e < 7 cobrem tudo). A seta aponta para a } do método.

Correção: Troque o último else if (…) por else, ou acrescente um return no fim. Aula: Valores de Retorno.

25. variable … might not have been initialized

Este código tem um erro de propósito.

public class Main {
    public static void main(String[] args) {
        int total;
        total = total + 10;
        System.out.println(total);
    }
}
$ javac Main.java
Main.java:4: error: variable total might not have been initialized
        total = total + 10;
                ^
1 error

O que quer dizer: "A variável total pode não ter sido inicializada." Variáveis locais não começam com zero: precisam de um valor antes de serem lidas.

Correção: int total = 0; Aula: Variáveis.

26. unreachable statement

Este código tem um erro de propósito.

public class Main {
    static int dobro(int x) {
        return x * 2;
        System.out.println("calculado");
    }

    public static void main(String[] args) {
        System.out.println(dobro(4));
    }
}
$ javac Main.java
Main.java:4: error: unreachable statement
        System.out.println("calculado");
        ^
1 error

O que quer dizer: "Instrução inalcançável." Nada depois de um return (ou break, continue, throw) no mesmo bloco pode rodar.

Correção: Mova a linha para antes do return, ou apague. Aula: Valores de Retorno.

27. non-static variable … cannot be referenced from a static context

Este código tem um erro de propósito.

public class Main {
    int contador = 0;

    public static void main(String[] args) {
        contador++;
    }
}
$ javac Main.java
Main.java:5: error: non-static variable contador cannot be referenced from a static context
        contador++;
        ^
1 error

O que quer dizer: "Variável não estática não pode ser usada num contexto estático." O main é static (da classe), e contador é de cada objeto: não há objeto nenhum ali.

Correção: Marque como static int contador, ou crie um objeto: new Main().contador++. Aula: static.

28. non-static method … cannot be referenced from a static context

Este código tem um erro de propósito.

public class Main {
    void saudar() {
        System.out.println("Olá");
    }

    public static void main(String[] args) {
        saudar();
    }
}
$ javac Main.java
Main.java:7: error: non-static method saudar() cannot be referenced from a static context
        saudar();
        ^
1 error

O que quer dizer: O mesmo, com um método.

Correção: static void saudar(), ou new Main().saudar(); Aula: static.

29. method … cannot be applied to given types

Este código tem um erro de propósito.

public class Main {
    static int somar(int a, int b) {
        return a + b;
    }

    public static void main(String[] args) {
        System.out.println(somar(2));
        System.out.println(somar(2, "3"));
    }
}
$ javac Main.java
Main.java:7: error: method somar in class Main cannot be applied to given types;
        System.out.println(somar(2));
                           ^
  required: int,int
  found:    int
  reason: actual and formal argument lists differ in length
Main.java:8: error: incompatible types: String cannot be converted to int
        System.out.println(somar(2, "3"));
                                    ^
Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output
2 errors

O que quer dizer: "O método somar não pode ser aplicado aos tipos dados." required: int,int (o que o método pede) e found: int (o que você passou): faltou um argumento. Na segunda chamada, o "3" é texto.

Correção: Passe dois int: somar(2, 3). A nota sobre -Xdiags:verbose só diz que existe uma versão mais longa da mensagem. Aula: Parâmetros e Argumentos.

30. constructor … cannot be applied to given types

Este código tem um erro de propósito.

public class Main {
    public static void main(String[] args) {
        Pessoa p = new Pessoa();
    }
}

class Pessoa {
    String nome;

    Pessoa(String nome) {
        this.nome = nome;
    }
}
$ javac Main.java
Main.java:3: error: constructor Pessoa in class Pessoa cannot be applied to given types;
        Pessoa p = new Pessoa();
                   ^
  required: String
  found:    no arguments
  reason: actual and formal argument lists differ in length
1 error

O que quer dizer: O único construtor de Pessoa pede uma String (required: String), e foi chamado sem nada (found: no arguments). Quando você escreve um construtor, o construtor vazio automático deixa de existir.

Correção: new Pessoa("Ana"), ou escreva também um construtor sem parâmetros. Aula: Construtores.

31. the switch expression does not cover all possible input values

Este código tem um erro de propósito.

public class Main {
    public static void main(String[] args) {
        String dia = "sab";
        String tipo = switch (dia) {
            case "sab", "dom" -> "fim de semana";
        };
        System.out.println(tipo);
    }
}
$ javac Main.java
Main.java:4: error: the switch expression does not cover all possible input values
        String tipo = switch (dia) {
                      ^
1 error

O que quer dizer: Um switch que devolve valor precisa de uma resposta para qualquer entrada; uma String pode ser qualquer coisa.

Correção: Acrescente default -> "dia útil"; Aula: switch com Setas.

Exceções e orientação a objetos

32. unreported exception …; must be caught or declared to be thrown

Este código tem um erro de propósito.

import java.nio.file.Files;
import java.nio.file.Path;

public class Main {
    public static void main(String[] args) {
        String texto = Files.readString(Path.of("notas.txt"));
        System.out.println(texto);
    }
}
$ javac Main.java
Main.java:6: error: unreported exception IOException; must be caught or declared to be thrown
        String texto = Files.readString(Path.of("notas.txt"));
                                       ^
1 error

O que quer dizer: "Exceção não informada; precisa ser capturada ou declarada." IOException é checked: o compilador obriga a decidir o que fazer.

Correção: try { … } catch (IOException e) { … }, ou throws IOException na assinatura do método (e o import java.io.IOException;). Aula: Checked × Unchecked.

33. exception … is never thrown in body of corresponding try statement

Este código tem um erro de propósito.

import java.io.IOException;

public class Main {
    public static void main(String[] args) {
        try {
            System.out.println("Olá");
        } catch (IOException e) {
            System.out.println("erro");
        }
    }
}
$ javac Main.java
Main.java:7: error: exception IOException is never thrown in body of corresponding try statement
        } catch (IOException e) {
          ^
1 error

O que quer dizer: "A exceção nunca é lançada no corpo do try." Capturar uma exceção checked que o bloco não pode lançar é erro.

Correção: Tire o catch, ou capture uma exceção que faça sentido ali. Aula: try e catch.

34. cannot assign a value to final variable

Este código tem um erro de propósito.

public class Main {
    public static void main(String[] args) {
        final double TAXA = 0.05;
        TAXA = 0.06;
    }
}
$ javac Main.java
Main.java:4: error: cannot assign a value to final variable TAXA
        TAXA = 0.06;
        ^
1 error

O que quer dizer: "Não dá para atribuir valor à variável final TAXA." Constante é constante.

Correção: Tire o final se o valor precisa mudar, ou crie outra variável. Aula: Constantes (final).

35. X is not abstract and does not override abstract method y() in Z

Este código tem um erro de propósito.

public class Main {
    public static void main(String[] args) {
    }
}

interface Forma {
    double area();
}

class Quadrado implements Forma {
    double lado;
}
$ javac Main.java
Main.java:10: error: Quadrado is not abstract and does not override abstract method area() in Forma
class Quadrado implements Forma {
^
1 error

O que quer dizer: "Quadrado não é abstrata e não implementa o método abstrato area() de Forma." Quem implementa uma interface precisa escrever todos os métodos dela.

Correção: Escreva o método: public double area() { return lado * lado; } Aula: Interfaces.

36. … has private access in …

Este código tem um erro de propósito.

public class Main {
    public static void main(String[] args) {
        Conta c = new Conta();
        c.saldo = 1000;
    }
}

class Conta {
    private double saldo;
}
$ javac Main.java
Main.java:4: error: saldo has private access in Conta
        c.saldo = 1000;
         ^
1 error

O que quer dizer: "saldo tem acesso privado em Conta." É o encapsulamento funcionando.

Correção: Use os métodos públicos da classe (depositar, getSaldo). Aula: Encapsulamento.


Missão: três erros num programa só

Missão: este programa tem três erros desta página. Rode, corrija um de cada vez (sempre o primeiro da lista) e faça-o mostrar Média: 8.0.

public class Main {
    public static void main(String[] args) {
        double nota1 = 7.5
        double nota2 = 8.5;
        String media = (nota1 + nota2) / 2;
        system.out.println("Média: " + media);
    }
}
public class Main {
    public static void main(String[] args) {
        double nota1 = 7.5;
        double nota2 = 8.5;
        double media = (nota1 + nota2) / 2;
        System.out.println("Média: " + media);
    }
}

Exercícios

1. O javac mostrou 7 erros. O que fazer primeiro?

2. variable total might not have been initialized quer dizer…

3. non-static method saudar() cannot be referenced from a static context aparece porque…

4. Qual a correção de integer number too large em long p = 8000000000;?

Complete a mensagem que aparece quando falta o ponto e vírgula:

Main.java:3: error:

Resumo

  • Formato: Arquivo.java:linha: error: mensagem, a linha copiada e o ^ na coluna.
  • Corrija sempre o primeiro erro e compile de novo.
  • Os campeões: ';' expected, cannot find symbol, incompatible types, missing return statement, might not have been initialized, non-static … static context.
  • As mensagens são sempre em inglês; esta página e a aula Lendo Erros do javac traduzem.