Pessoal, boa noite.
Após escrever o seguinte código abaixo, o Eclipse acusa o seguinte erro:
Exception in thread “main” java.lang.Error: Unresolved compilation problems:
Syntax error on token “;”, { expected after this token
Syntax error, insert “}” to complete ClassBody
at Matriz.<init>(Matriz.java:4)
at Principal.main(Principal.java:8)
Não consigo descobrir o motivo, por favor me ajudem. Tenho “Quase” certeza que a declaração está válida.
Obs: (Sei que posso declarar assim: int[] nums = new int[7];), porém gostaria de descobrir o motivo de não conseguir do jeito abaixo.
public class Matriz {
int[] nums; // Syntax error on token “;”, , expected
nums = new int[7];
}
public class Principal {
public static void main (String [] args){
Matriz A = new Matriz();
System.out.println(A.nums[0]);
}
}
gostaria de poder ajudar,mas estou passando por algo bem parecido e gostaria de ajuda tbm;
meu problema quando copila é;exception in thread main java langNoSuchmethodError: main!
Se alguém poder me ajudar agradeço mto…obrigada!
Insane,
Acredito que a forma que você declarou esta errada.
Teria algum motivo especifico, para você atribuir o valor desta forma, e não da forma que você mesmo mencionou na mensagem?
Roseane,
Você configurou certinho as variáveis de ambiente? a assinatura do seu método main esta correta?
Abraços
[quote]Não consigo descobrir o motivo, por favor me ajudem. Tenho “Quase” certeza que a declaração está válida.
Obs: (Sei que posso declarar assim: int[] nums = new int[7];), porém gostaria de descobrir o motivo de não conseguir do jeito abaixo.
[code]
public class Matriz {
int[] nums; // Syntax error on token “;”, , expected
nums = new int[7];
}
[/code][/quote]
Você não consegue porque você não pode escrever comandos no corpo da classe. Comandos devem sempre estar dentro do corpo de métodos, construtores ou blocos de inicialização.
[quote=Roseane Araujo]gostaria de poder ajudar,mas estou passando por algo bem parecido e gostaria de ajuda tbm;
meu problema quando copila é;exception in thread main java langNoSuchmethodError: main!
Se alguém poder me ajudar agradeço mto…obrigada![/quote]
Isso não é erro de compilação, isso é erro de execução. Simplesmente a JVM não consegue achar o método main da classe que você pediu para executar. O ponto de entrada de um programa Java sempre é um método com a seguinte assinatura:
class App{
public static void main(String [] args){
//faz o que você quer ...
}
}
[quote=InsaneChess]Não consigo descobrir o motivo, por favor me ajudem. Tenho “Quase” certeza que a declaração está válida.
Obs: (Sei que posso declarar assim: int[] nums = new int[7];), porém gostaria de descobrir o motivo de não conseguir do jeito abaixo. [/quote]
Primeiramente, quando for postar código coloque entre as tags [‘code’] e [’/code’] (sem aspas) para ficar mais legível.
Quanto a sua dúvida ou você inicializa no momento da declaração como você mesmo citou:
int[] nums = new int[7];
Ou você inicializa a variável dentro de seu construtor ou de um de seus métodos:
[code]public class Matriz {
int[] nums;
//No construtor.
public Matriz() {
nums = new int[7];
}
//No método.
public void inicializarMatriz() {
nums = new int[7];
}
} [/code]
EDIT: Fica como exemplo. Não tinha visto o post do rmendes08.
rmendes08, desculpe.
Acabei de ler o tópico para iniciantes. Prometo formatar melhor na hora de postar os próximos códigos.
Obrigado pela ajuda de todos vocês,
Só me expliquem uma coisa.
Somente para entendimento…
Por que eu só posso inicializar a variável de referência dentro de um construtor ou de algum método da classe e não no corpo dela?
Por que é válido isso em qualquer parte do corpo de uma classe:
int[] nums = new int[7];
E isso somente em métodos e construtores:
int[] nums;
nums = new int[7];
???
Obrigado pela atenção de vocês.
Não é muito usual, mas você também pode fazer assim:
[code]public class Matriz {
int[] nums;
//No inicializador
{
nums = new int[7];
}
} [/code]
O que não pode é ficar um trecho de código perdido no espaço.