Ajuda Java!

4 respostas
D

Galera esse é meus codigos:

import java.util.Scanner;
public class Classe{

   int classe;
   int mensagem;  
   
   Scanner input = new Scanner (System.in);   
   public void MensagemTeste(){       
   System.out.println ("Insira uma mensagem");
     String classe = input.next();

   System.out.printf ("Mensagem Usuario1: %s", classe);
   System.out.println("");
   }       

   public void MensagemTeste1(){
   System.out.println ("Insira uma mensagem");
     String classe = input.next();

   System.out.printf ("Mensagem Usuario2: %s", classe);
   System.out.println("");
   }   
   public void Sair(){
    String mensagem;
    System.out.println("");
    mensagem = input.next();
    }
  
}
public class ClasseTeste{
public static void main (String args[]){
int mensagem = 1;
   Classe classe = new Classe ();
   Classe classe1 = new Classe();
   Classe sair = new Classe();
   do{   
   classe.MensagemTeste();
   classe1.MensagemTeste1();
   sair.Sair();
} while (mensagem != 0);
    }
  }

Olhem que na classe main eu fiz uma chamada de metodo sair.
que na classe Classe recebe alguns comandos, mais
porque que não efetua a saida, do meu programa… quando digito 0.???
:smiley:

4 Respostas

T

Você está tentando pegar a variável de instância “mensagem” da classe “Classe” mas em vez disso está usando a variável local “mensagem” declarada dentro do método “main”.

emmanuelrock

Primeiro, você não precisa de três objetos, você pode instanciar apenas um objeto e usá-lo pra invocar os três métodos.

Segundo, porque usar as variáveis locais, se você declarou atributos no escopo global da classe?

Terceiro porque e até quando esse while executará?

Quarto, está acontecendo um looping infinito devido a não alteração da variável mensagem, ou seja, o while só pára quando esta possuir o valor ‘0’, mas esta sempre valerá ‘1’!

Refaça o código e poste novamente, pra gente dar mais algumas dicas.

Abraço…espero ter ajudado…

A

Seu programa não sai quando digita “0” porque você atribuiu a mensagem para o atributo mensagem da classe “Classe”, porém o teste do seu laço de repetição está sendo feito com uma variável local.

  1. Na classe “Classe” mude de “public void Sair()” para “public int Sair()”;
  2. Na classe “ClasseTeste”, dentro do laço de repetição, mude o “sair.Sair();” para “mensagem = sair.Sair();”

Deve funcionar…

D

Valeu galera consegui …fico legal…

Criado 24 de julho de 2009
Ultima resposta 24 de jul. de 2009
Respostas 4
Participantes 4