Duvida Algoritimo

9 respostas
danilopelegrino

Boa noite a todos.

Primeiramente gostaria de parabenizar as pessoas responsaveis por este forum que sem duvida nenhuma é um dos melhores, com pessoas super bacanas e dispostas a judar sempre que possivel.

Bom, minha duvida é de principiante mesmo.
Estou fazendo o curso da globalcode da academia java e estou gostando muito desta linguagem.

Bom, vamos ao que interesa rsrsr

Estou em duvida de como fazer o seguinte programa:

Escrever um programa que utilize while para inverter um numero inteiro.

class Aula1Inverte {
                 public static void main (String args[]) {
                          int numeroInverte = 123456789;
                          int numeroInvertido = 0;

                          while (<condicao>) {
                                   // Logica para inversao do numero
                          } // end while

                          System.out.println(numeroInvertido);
                 }
}

Minha duvida na verdade é se eu terei que tranformar o numeroInverte em String para manipular um array ou existe alguma outra forma??

Desculpem a santa ignorancia de um iniciante rsrsrs

agradeço a todos t+ abraço fuiiiiiiiiiiiiii

9 Respostas

Marcio_Duran

[size=14]Eis alguns exemplos !!![/size]

import javax.swing.*;  
public class Inverte  
{  
   public static void main(String args[])  
   {  
      int total=0;  
        
      String resp = JOptionPane.showInputDialog(null,"Digite o número para Inverter","INVERSÃO",JOptionPane.QUESTION_MESSAGE);  
      int y = Integer.parseInt(resp);  
      total = y;  
        
      System.out.println();  
        
      while(total>0)  
      {  
         System.out.print(total % 10);  
         total = total / 10;  
      }  
              
      System.out.println();  
      System.out.println();  
      System.out.println();  
      System.out.println();  
      System.exit(0);  
        
   }  
}

[size=14]Abaixo um exemplo mais simples !!![/size]

public class Inversao {  
  
 public static void main(String args) {  
 String original = "123456789";  
 String reverso = new StringBuffer(original).reverse().toString();  
 System.out.println(original + "\n" + reverso);  
 }  
}

[size=12]Minha duvida na verdade é se eu terei que tranformar o numeroInverte em String para manipular um array ou existe alguma outra forma ?[/size]

[size=12]Manipular um array ???[/size]

danilopelegrino

Isso mesmo. Uma String não é um array de chars??? Então por isso fiz a pergunta. Ou to falando bobagem? rsrsrsr

Valeu pelas dicas, vou dar uma estudada aqui… Se alguem souber de mais algumas eu fico grato :slight_smile:

abraço t+ e obrigadoooooooooooooooo

Bani

Se quiser fazer o primeiro exemplo do Márcio jogando numa variável ao invés de simplesmente colocando na tela, fica assim:

public class Teste{
  
  public static void main(String[] args){
    int n = 123456789;
    int tmp = n;
    int numDigitos=1;
    int invertido = 0;

    while(tmp>0){
      tmp = tmp/10;
      numDigitos++;
    }

    for(int i = 1; i < numDigitos; i++) {
      int d = n % 10;
      n /= 10;
      invertido += d * (int)Math.pow(10,numDigitos-i-1);
    }

    System.out.println(invertido);
  }
}
Andre_Brito

Esse problema já caiu no TopCoder! :slight_smile: (eu fiz usando Strings, deram challenge e eu perdi :|)
Eu não aconselharia a fazer por chars e Strings (até porque esse problema é legal para treinar a lógica).

int r = 0; while(n > 0) { r = 10 * r + n % 10; n/=10; }

O meu não passou porque tinha que tirar os zeros. Por exemplo, se a entrada é 100, ficaria 1 e não 001.

blackfalcon

danilopelegrino:
Isso mesmo. Uma String não é um array de chars??? Então por isso fiz a pergunta. Ou to falando bobagem? rsrsrsr

Valeu pelas dicas, vou dar uma estudada aqui… Se alguem souber de mais algumas eu fico grato :slight_smile:

abraço t+ e obrigadoooooooooooooooo

Acho que nao cara… array é array e string é string…

Apesar de ate ter como voce fazer um array com uma string usando um comando que nao estou lembrando agora…

Nao tenho certeza, vamos esperar o comentario de alguem mais qualificado a falar :wink:

Abraços

ViniGodoy

No C é. No Java e no C++, talvez a implementação interna até seja assim, mas ambos possuem classes tão encapsuladas que você não conseguirá trabalhar dessa forma. Encare o String como um tipo de dado novo mesmo.

Marcio_Duran

danilopelegrino:
Isso mesmo. Uma String não é um array de chars??? Então por isso fiz a pergunta. Ou to falando bobagem? rsrsrsr

Valeu pelas dicas, vou dar uma estudada aqui… Se alguem souber de mais algumas eu fico grato :slight_smile:

abraço t+ e obrigadoooooooooooooooo


:arrow: Uma String não é um array de chars ???, e por isso se tratando de Tipo eu só tenho chars ? Array só atua com Tipos primitivos, e se não tivesse tipo primitivo(do que valeria sua argumentação) não poderia usar objetos ou(referência) para array.

Pergunta:

String são objetos ?

Objetos de String são inalteráveis ? e no pool de constantes String a VM gerência tal referência, pode explicar de que forma ?

danilopelegrino

Andre Brito:
Esse problema já caiu no TopCoder! :slight_smile: (eu fiz usando Strings, deram challenge e eu perdi :|)
Eu não aconselharia a fazer por chars e Strings (até porque esse problema é legal para treinar a lógica).

int r = 0; while(n > 0) { r = 10 * r + n % 10; n/=10; }

O meu não passou porque tinha que tirar os zeros. Por exemplo, se a entrada é 100, ficaria 1 e não 001.

Perfeito Andre, valeu mesmo. Testei e funfo legal.

Obrigado a todos pelas dicas e correções das coisas as quais eu nao sei rsrsr

To aprendendo muito com este forum, pessoal gente boa mesmo.

Obrigado e t+ galera vlwwww fuiiiiiiiiiiiii

jubei

Cara,
tive que inverter uma palavra e dizer se ela é um palindromo, então vou postar todo o codigo.
Obs: receba o numero como uma String, caso queira retira os zeros teste cada elemento no FOR.[code]

package inverte;

import javax.swing.JOptionPane;

class Inverte{
String InverteFrase(String x){

String invertida="";


for (int i =x.length()-1;i>=0; i--){
invertida += (x.charAt(i));
}
return invertida;
}
}
/**
*
* @author pessoal
*/

public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here

Inverte funcao = new Inverte();

String x, a = JOptionPane.showInputDialog("Texto para entrar com teclado String");
x = funcao.InverteFrase(a);

System.out.println(a);

if (a.equals(x)){
System.out.println("esta palavra é um palindromo");
}
else{
System.out.println("esta palavra não é um palindromo");
}

System.out.println(x);
}
}
[code]

Criado 4 de outubro de 2008
Ultima resposta 5 de out. de 2008
Respostas 9
Participantes 7