Erro System.out

13 respostas
M

Estou com um problema que não consigo resolver de jeito nenhum.

É apenas um programa que estou fazendo para fixar conceitos.

import java.lang.*; // Essa linha não é obrigatoria para usar o System.out, correto?

public class Heranca {
	public int idade;
	protected int idade2;
	private int idade3;
	
	public Heranca(int idade, int idade2, int idade3) {
		this.idade = idade;
		this.idade2 = idade2;
		this.idade3 = idade3;
	}
	
	public Heranca() {
		this.idade = 20;
		this.idade2 = 21;
		this.idade3 = 22;
	}
	
	public void soma(int num) {
		this.idade = num + num;
		this.idade2 = num + num;
		this.idade3 = num + num;
	}
	
	protected void subtracao(int num) {
		this.idade = num - num;
		this.idade2 = num - num;
		this.idade3 = num - num;
	}
	
	private void mult(int num) {
		this.idade = num * num;
		this.idade2 = num * num;
		this.idade3 = num * num;
	}
}

class Heranca2 extends Heranca {
	
	public Heranca2() {
		super(3, 5, 7);
	}
	
	System.out.println("Teste"); // Estou tendo problema nessa linha.
}

Esse é o erro que me retorna:

C:\Documents and Settings\robson\Desktop>javac Heranca.java
Heranca.java:45: <identifier> expected
System.out.println("Teste");
^
Heranca.java:45: illegal start of type
System.out.println("Teste");
^
2 errors

O que estou fazendo de errado? Não consigo compilar pelo JCreator também, dá erro de CLASSPATH. Variaveis de ambiente estão configuradas.

Uma luz? :idea:

13 Respostas

Laubstein_M_cio

Isso resolve o problema!

public static void main (String args[]) {

System.out.println(Teste);

}
cris.t

ou vc pode colocar o sysout dentro do construtor

public Heranca2() {   
        super(3, 5, 7);  
        System.out.println("Teste");  
    }

e chama essa classe no metodo main

public static void main (String args[]) { 
   new Herança2();
}
M

Essa parte de criar um outro .java e lá colocar o main para usar essa classe eu já fiz, mas o que eu não estava entendendo é porque esse arquivo Heranca.java não compilava.

Pelo que pude entender, o System.out.println não pode ficar fora do construtor se eu não instanciar um objeto do tipo Heranca2 dentro do main ou colocá-lo dentro do construtor.

É isso mesmo?

*Cara vocês são eficientes pacas. Acabei de postar a dúvida já resolveram meu problema. Parabéns e Obrigado! :lol:

latorre

Não compila pq o System.out não está dentro de um método.

I

A linha do System.out.println(“Teste”); está jogada ao vento.

Ela deve fazer parte de um metodo da sua classe.

Se você lembrar dos conceitos de classes, elas devem ter metodos e propriedades. Essa linha não é nada disso, nem um metodo da sua classe nem uma propriedade :-).

M

Agora ficou claro o porque aconteceu o erro.

Obrigado! 8)

M

Pessoal consegui resolver apenas colocando o System.out dentro do metodo mas agora aparece um outro erro quando tento instanciar um objeto do tipo Heranca.

O código do UsarHeranca.java

public class UsarHeranca { public static void main(String args[]) { Heranca heranca = new Heranca(2, 3, 4); } }

Me retorna o seguinte erro:

UsarHeranca.java:3: cannot find symbol

symbol  : class Heranca

location: class UsarHeranca

Heranca heranca = new Heranca(2, 3, 4);

^

UsarHeranca.java:3: cannot find symbol

symbol  : class Heranca

location: class UsarHeranca

Heranca heranca = new Heranca(2, 3, 4);

^

2 errors

Quando o meu JCreator estava funcionando ele não dava erro nenhum, agora eu estou compilando e executando no terminal.

Os .java e os .class estão na mesma pasta. Alguma idéia?

marcosharbs

bem sua classe herança nao possui um constructor para receber aqueles parametros que vc esta tentando passar qdo ta instanciando o objeto.

ou vc faz

Heranca heranca = new Heranca();

ou talvez vc tivesse tentando fazer isso:

Heranca heranca = new Heranca2(2, 3, 4);
M

Ué então eu estou com uma dúvida terrivel agora.

public class Heranca {  
   public int idade;  
   protected int idade2;  
   private int idade3;  
       
   public Heranca(int idade, int idade2, int idade3) {  
      this.idade = idade;  
      this.idade2 = idade2;  
      this.idade3 = idade3;
   }

Olha o construtor ai recebendo 3 parametros do tipo inteiro. Não esta correto?

marcosharbs

hmmmmm
ta certo
nao tinha visto esse constructor desculpa
poi se cara agora nao sei tb
:stuck_out_tongue:
deveria instanciar

danilopelegrino
mewtwo64:
Estou com um problema que não consigo resolver de jeito nenhum.

É apenas um programa que estou fazendo para fixar conceitos.

import java.lang.*; // Essa linha não é obrigatoria para usar o System.out, correto?

public class Heranca {
	public int idade;
	protected int idade2;
	private int idade3;
	
	public Heranca(int idade, int idade2, int idade3) {
		this.idade = idade;
		this.idade2 = idade2;
		this.idade3 = idade3;
	}
	
	public Heranca() {
		this.idade = 20;
		this.idade2 = 21;
		this.idade3 = 22;
	}
	
	public void soma(int num) {
		this.idade = num + num;
		this.idade2 = num + num;
		this.idade3 = num + num;
	}
	
	protected void subtracao(int num) {
		this.idade = num - num;
		this.idade2 = num - num;
		this.idade3 = num - num;
	}
	
	private void mult(int num) {
		this.idade = num * num;
		this.idade2 = num * num;
		this.idade3 = num * num;
	}
}

class Heranca2 extends Heranca {
	
	public Heranca2() {
		super(3, 5, 7);
	}
	
	System.out.println("Teste"); // Estou tendo problema nessa linha.
}

Esse é o erro que me retorna:

C:\Documents and Settings\robson\Desktop>javac Heranca.java
Heranca.java:45: <identifier> expected
System.out.println("Teste");
^
Heranca.java:45: illegal start of type
System.out.println("Teste");
^
2 errors

O que estou fazendo de errado? Não consigo compilar pelo JCreator também, dá erro de CLASSPATH. Variaveis de ambiente estão configuradas.

Uma luz? :idea:

mewtwo64, oque exatamente é para esses metodos SOMA, MULT E SUBTRACAO FAZER??

pq pelo que to vendo, eles recebem um numero e alteram os atributos de idade.
Não seria para ele somar as idades ou somar o valor que é passado a idade??

Explica pra nois ai que ai da para ajudar blz?

abraço

M

É os construtores estão lá criados sim. Sem erro. Passou desapercebido. =)

Concordo com você que deveria. Tá um mistério isso ae. haha.

Danilo esses metodos são apenas para fixar conceito de herança, modificadores de acesso, sobrecarga de construtores. Apenas para isso. Eu nem tinha percebido que não tinha criado o metodo que acordo com o que sugere.

A minha grande dúvida é porque não compila. Dá esse erro ai que eu não tô entendo nada.

Será pode ser alguma coisa do compilador?

Alguma luz? :stuck_out_tongue:

danilopelegrino
mewtwo64:
É os construtores estão lá criados sim. Sem erro. Passou desapercebido. =)

Concordo com você que deveria. Tá um mistério isso ae. haha.

Danilo esses metodos são apenas para fixar conceito de herança, modificadores de acesso, sobrecarga de construtores. Apenas para isso. Eu nem tinha percebido que não tinha criado o metodo que acordo com o que sugere.

A minha grande dúvida é porque não compila. Dá esse erro ai que eu não tô entendo nada.

Será pode ser alguma coisa do compilador?

Alguma luz? :P

Cara, tenta isso aqui:

class Heranca {
	public int idade;
	protected int idade2;
	public int idade3;
	
	public Heranca(int idade, int idade2, int idade3) {
		this.idade = idade;
		this.idade2 = idade2;
		this.idade3 = idade3;
	}
	
	protected void soma(int num) {
		this.idade += num;
		this.idade2 += num;
		this.idade3 += num;
	}
	
	private void subtracao(int num) {
		this.idade -= num;
		this.idade2 -= num;
		this.idade3 -= num;
	}
	
	public void mult(int num) {
		this.idade *= num;
		this.idade2 *= num;
		this.idade3 *= num;
	}
}
class TesteHeranca {

	public static void main(String args[]){
		Heranca h = new Heranca(2, 3 , 4);
		h.soma(2);
		System.out.println("Idade1 = " + h.idade + "\nIdade2 = " + h.idade2 + "\nIdade3 = " +h.idade3);
	}
}

Acredito que o erro estava naquele contrutor default que vc colocou. Pois eu retirei ele e retirei aqueles parametros dos seus metodos e troquei por outros e funcionou.

Criado 11 de novembro de 2008
Ultima resposta 14 de nov. de 2008
Respostas 13
Participantes 7