Em um exercicio foi pedido para que eu invertesse a ordem de um numero inteiro:
int i=123456789;
Qual a logica deste programa usando while ?
Como inverter um inteiro???
Alguém poderia me ajudar?
Em um exercicio foi pedido para que eu invertesse a ordem de um numero inteiro:
int i=123456789;
Qual a logica deste programa usando while ?
Como inverter um inteiro???
Alguém poderia me ajudar?
Cara, inverter um inteiro pode ser, como o exemplo de resolução abaixo, escreve-lo de traz para frente. Em relação ao while, é que o processo irá continuar rodando até a condição ser satisfeita.
/*
* Teste.java
*
* Created on 14 de Novembro de 2004, 19:07
*/
/**
*
* @author hmichel
*/
public class Teste {
/** Creates a new instance of Teste */
public Teste() {
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
//Valor a ser convertido
int n = 123456789;
//Valor a ser convertido, porém como String
String st = String.valueOf( n );
//índice do caracter a ser obtido
int i = 0;
//O número invertido gerado
String newSt = "";
while ( i < st.length() ){
newSt = st.charAt( i ) + newSt;
i++;
}
System.out.println( newSt );
}
}
Hmichel,
Achei que existisse outra forma de fazer isto sem ter que passar para String.
Até imaginei que fosse assim, mas não foi mencionado isto no exercicio.
Valeu!!
Olha, realmente não me lembro de outra forma de se fazer isto. Se por acaso você descobrir, posta ai para enriquecermos o post.
[]´s
Há tbm essa outra forma, sem utilizar while e utilizando StringBuffer:
/**
* @author Viviane Grieco
*
*/
public class Teste {
public static void main(String args[] ) {
// numero
int n = 123456;
// transforma em String o numero
String str = String.valueOf(n);
// transforma em StringBuffer a String para poder inverter
StringBuffer sb = new StringBuffer(str);
// metodo que inverte a String: sb.reverse()
System.out.println("Numero invertido: " + sb.reverse());
}
}
[]'s
Me preocupa quando programadores esquecem algoritmos e confiam tudo na API…
Umo jeito bem porco:
Para pegar o último algarismo, divida o número por 10, guarde num float ou double para não perder a casa decimal. Depis arredonde o valor para um inteiro, diminua o double deste int, multiplique o resultado por 10 e você tem o último algarismo.
Para monter o invertido, pegue o último algarismo (o que você descobriu primeiro), multiplique-o por (10 elevado a <numero de algarismos - 1>), assim se o último foi 5 e você tinha 3 algarismos, vai ser 5 * (10²)=500. Depois você pega penúltimo e multiplica por (10 elevado a <numero de algarismos -2>), se o penúltimo fosse 3 seria 3 * (10¹)=30, e some os números: 500+30=530.
Certamente se você pensar/pesquisar vai achar um jeito mais simples de fazer isso, principalmente se considerar que eu sou uma ameba em cálculo :lol:
[]s
Só explicando o que o pcalcado quis dizer…
class Test165 {
public static void main(String[] args) {
int n = Integer.parseInt (args[0]);
if (n < 0) {
n = -n;
System.out.print ("-");
}
while (n > 0) {
int d = n % 10;
System.out.print (d);
n = n / 10;
}
System.out.println ();
}
}
Obviamente como um “int” é um número relativamente pequeno (de -[telefone removido] a +[telefone removido]) você não pode passar qualquer número como parãmetro. Curiosidade - o que ocorre se você passar exatamente -[telefone removido] para o programa acima?