Boa tarde,
Estou iniciando os estudos de Java e estou com um problema ao compilar esse codigo. Segue o código abaixo:
class Turma {
Aluno[] alunos;
void imprimeNotas() {
for(int i = 0; i < this.alunos.length; i++) {
Aluno aluno = this.alunos[i];
if (aluno == null) continue;
System.out.println(aluno.nota);
}
}
}
class Aluno {
String nome;
int nota;
}
class TesteDaTurma {
public static void main (String[] args) {
Turma fj11 = new Turma();
fj11.alunos = new Aluno[10];
fj11.alunos[0] = new Aluno();
fj11.alunos[0].nome = "Mauricio";
fj11.alunos[0].nota = 9;
fj11.alunos[1] = new Aluno();
fj11.alunos[1].nome = "Rodrigo";
fj11.alunos[1].nota = 8;
fj11.alunos[2] = new Aluno();
fj11.alunos[2].nome = "Cezar";
fj11.alunos[2].nota = 10;
fj11.imprimeNotas();
}
}
Creio que fiz igual na videoaula da Alura, mas da esse erro abaixo.
Erro: o método main não foi encontrado na classe Turma; defina o método main como:
public static void main(String[] args)
ou uma classe de aplicativo JavaFX deve expandir javafx.application.Application
Duvida, o metodo main tem que estar dentro da classe Turma? Não pode estar fora das chaves? Se sim, então devo colocar a classe Aluno dentro da classe Turma?
Copiei e colei seu código:
package Principal;
class Turma {
Aluno[] alunos;
void imprimeNotas() {
for (int i = 0; i < this.alunos.length; i++) {
Aluno aluno = this.alunos[i];
if (aluno == null) {
continue;
}
System.out.println(aluno.nota);
}
}
}
class Aluno {
String nome;
int nota;
}
class TesteDaTurma {
public static void main(String[] args) {
Turma fj11 = new Turma();
fj11.alunos = new Aluno[10];
fj11.alunos[0] = new Aluno();
fj11.alunos[0].nome = "Mauricio";
fj11.alunos[0].nota = 9;
fj11.alunos[1] = new Aluno();
fj11.alunos[1].nome = "Rodrigo";
fj11.alunos[1].nota = 8;
fj11.alunos[2] = new Aluno();
fj11.alunos[2].nome = "Cezar";
fj11.alunos[2].nota = 10;
fj11.imprimeNotas();
}
}
Mude a classe TesteDaTurma
de:
class TesteDaTurma {
para:
public class TesteDaTurma {
e tente de novo para ver se funciona.
O mesmo erro apresentou ao compilar .
Mesmo erro com o mesmo codigo. Estranho.
Observei um detalhe na imagem da sua IDE. O último arquivo Turma.java tem um asterisco no lado do nome, indicando que ele não está salvo.
Você salvou o arquivo antes de executar?
Salvei. Criei outro projeto e fiz denovo e apresenta o mesmo erro. Preciso importar alguma alguma lib ou colocar em um package será?
O eclipse apresenta esse alerta na linha 22
Tenta criar cada classe em um arquivo diferente, deixa todos no mesmo package.
Todas as classes devem ser public
1 curtida
Funcionou!! Entao por isso nao compilava ? Não posso ter duas classes no mesmo arquivo .java ?
1 curtida
Marca como resolvida a resposta do @Mauricio_Hartmann
Entendo que o java não permite 2 classes publicas no mesmo arquivo. Mas esse arquivo não tinha classe publica, apenas da TesteDaTurma. Não entendi ainda o motivo de não compilar daquele modo.
Você pode ter mais de uma classe no mesmo arquivo.
Talvez o erro estivesse sendo causado pelos modificadores de visibilidade.
Mas é melhor deixar uma classe em cada arquivo.
1 curtida
Creio que isso pode ser coisa da IDE também…
2 curtidas
Sim. Creio que talvez seja um bug na IDE ou talvez a versão do Java. Testei os arquivos dele usando o Java 8 e a última versão do eclipse, rodou de boas
1 curtida
Você estava tentando executar a classe Turma
, que não possui método main
.
Tem que executar a classe TesteDaTurma
.
Pode sim, mas não é bonito.
O que não pode é ter mais de uma classe pública no mesmo arquivo .java
.
1 curtida