[RESOLVIDO] - Números em ordem crescente

10 respostas
M

Bom dia, meu problema é o seguinte.
Tenho uma classe que se chama TresNumerosInteiros, nessa classe eu tenho o método ordemCrescente, que é assim:

public void ordemCrescente(){
             int aux;
            if (primeiro > segundo){
            // troca
            aux = primeiro;
            primeiro = segundo;
            segundo = aux;
            
            }
            
            if (segundo > terceiro){
             //troca
            aux = segundo;
            segundo = terceiro;
            terceiro = aux;
            
            }
            if (primeiro > segundo){
             //troca
            aux = primeiro;
            primeiro = segundo;
            segundo = aux;
            }
            
            }

Ok, agora eu tenho uma classe de teste, que lê 3 números inteiros, e eu preciso, nessa classe de teste, chamar esse método ordemCrescente, mas eu não estou conseguindo, alguém pode dar uma mão?

10 Respostas

F

Poste o erro Stack Trace fica mais facil…

Abraços!

diogoprosoft

Cara seu método deve receber os valores por parâmetro e na outra classe vc deve ter um método main que chame esse método.

Tipo assim:

public static void main(String args[]){
OrdemCrescente oc = new OrdemCrescente();

oc.ordemCrescente(3,5,2);

}
S

Para chamar o método da outra classe (TresNumerosInteiros) você pode fazer mais ou menos da seguinte forma:

TresNumerosInteiros atributoParaClasse = new TresNumerosInteiros();

atributoParaClasse.ordemCrescente();

Poste direitinho o que está acontecendo e o que quer fazer, pois eu também não entendi direito, e acho que o seu problema não foi o que eu falei neste post.

M

Cara, esse é o meu código da classe TresNumerosInteiros:

public class TresNumerosInteiros {
         
         private int primeiro;
         private int segundo;
         private int terceiro;
         
         
         public TresNumerosInteiros (int p, int s, int t){
             setPrimeiroNumero (p);
             setSegundoNumero (s);
             setTerceiroNumero (t);
            }
            
         public void setPrimeiroNumero (int numero){
             if (numero>0)
             primeiro = numero;
             else primeiro =1;
            }
            
         public void setSegundoNumero (int numero){
             if (numero>0)
             segundo = numero;
             else segundo =1;
            }
          
         public void setTerceiroNumero (int numero){
             if (numero>0)
             terceiro = numero;
             else segundo =1;
            }   
            
         public int getPrimeiroNumero(){
             return primeiro;
            }
            
         public int getSegundoNumero(){
             return segundo;
            }
            
         public int getTerceiroNumero(){
             return terceiro;
            }
         
         public int getMaior(){
            int maior = primeiro;
            if (segundo > maior)
                maior = segundo;
            if (terceiro > maior)
                maior = terceiro;
            return maior; 
            }
            
         public int getMenor(){
            int menor = primeiro;
            if (segundo < primeiro)
                menor = segundo;
            if (terceiro < menor)
                menor = terceiro;
                return menor;
            }
            
         public void ordemCrescente(){
             int aux;
            if (primeiro > segundo){
            // troca
            aux = primeiro;
            primeiro = segundo;
            segundo = aux;
            
            }
            
            if (segundo > terceiro){
             //troca
            aux = segundo;
            segundo = terceiro;
            terceiro = aux;
            
            }
            if (primeiro > segundo){
             //troca
            aux = primeiro;
            primeiro = segundo;
            segundo = aux;
            }
            
            }
        }

e esse é o meu código da classe de teste:

public class TesteNumeros{
    public static void main (String args[]){
        Teclado t = new Teclado();
        int primeiro = t.leInt("Digite o primeiro número: ");
        int segundo = t.leInt("Digite o segundo número: ");
        int terceiro = t.leInt("Digite o terceiro número: ");
            if(primeiro < 0 || segundo < 0 || terceiro < 0){
                System.out.println("Número inválido");
                return;
            }
            
            TresNumerosInteiros x = new TresNumerosInteiros(primeiro, segundo, terceiro);
                System.out.println("O maior número é: " + x.getMaior());
                System.out.println("O menor número é: " + x.getMenor());
                
                int maior = x.getMaior();
                System.out.println("O maior número tem: " + String.valueOf(maior).length()+ " digitos");
                
                int menor = x.getMenor(); 
                if (String.valueOf(menor).length() < 3){
                       
                Integer.toString(menor);
                System.out.printf("O número que possui menos que 3 dígitos, fica assim:  " + "%03d", menor);
            }
           

               // Aqui deveria ser chamado o método ordemCrescente

          
}

Pois bem, eu não estou sabendo como chamar o método. E pra eu passar parâmetros pra ele na classe de teste, eu já não deveria ter criado ele com parâmetros, já?

diogoprosoft

Entendi…

Assim não rola?

x.ordemCrescente();
J

Se o seu programa permitir o uso de alguma API para facilitar o trabalho, voce poderia adicionar esses tres numers inteiros em um vetor e depois usar o metodo Arrays.sort para ordena-los em ordem crescente.
Porem, se nao for permitido…o certo seria assim mesmo.

Acredito que voce nao esta conseguindo acessar o metodo porque ele esta em uma classe diferente da principal.
Para acessa-lo, voce deve importar a classe e criar um novo objeto usando essa classe.

import pacotedesuaclasse.SuaClasse;    //Importa sua classe
SuaClasse qualquerNome = new SuaClasse();    //Cria um novo objeto usando a sua classe

Para acessa-lo basta chamar o nome que foi atribuido ao novo objeto e chamar o metodo correspondente a sua funcao.

qualquerNome.metodoChamado();

Se o metodo tiver alguns parametros, estes devem ficar dentro do parenteses nao hora em que for chamar.

qualquerNome.metodoChamado(parametros, parametros, parametros...);
M

sim, desse jeito funciona:

x.ordemCrescente();

mas eu não consigo fazer exibir na tela os números em ordem crescente…ou melhor, eu nem consigo fazer exibir os números na tela, pois se eu escrever assim:

System.out.println(x.ordemCrescente);

dá um erro dizendo que, o método é void e não pode retornar nada

diogoprosoft

hehehe, sim vc não pode colocar um void dentro de um System, pois não tem retorno.
Você deve ter esse System dentro do seu método ordemCrescente para exibir seu resultados, ai vc pode criar um pequeno array para posicionar eles da forma ordenada

M

beleza, vou tentar aqui!

M

Aee, funcionou!
Valeu

Criado 18 de abril de 2013
Ultima resposta 22 de abr. de 2013
Respostas 10
Participantes 5