[RESOLVIDO] Invertendo número inteiro.  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
GiancarloBraga
Java Ninja
[Avatar]

Membro desde: 25/06/2007 06:00:00
Mensagens: 261
Offline

Pessoal! Tudo bem?

Eu estou aqui com um livro sobre Java aberto(DEITEL) e surgiu um exercício que está me desafiando porque realmente não sei como posso chegar a tal façanha só com o que aprendi até agora no desenvolvimento dos temas.

O exercício é esse:

6.26 Write a method that takes an integer value and returns the number with its digits reversed. For example, given the number 7631, the method should return 1367. Incorporate the method into an application that reads a value from the user and displays the result.

Tradução:

6.26 Escreva um método que pega um valor inteiro e retorna o número com seus dígitos invertidos. Por exemplo, dado o número 7631, o método deverá retornar 1367. Incorpore o método dentro de uma aplicação que lê o valor do usuário e mostre o resultado.

----------

Eu só gostaria de saber como é que vou fazer para 'inverter' o tal número. Alguma idéia de algoritmo? Alguma ajuda?

Eu imagino que o nível de resolução pretendida pelo autor do livro é apenas usando os operadores matemáticos, com as estruturas de controle e um pouco de orientação a objetos. Essa parte de montar o programa eu sei, trabalhar com os métodos, criar o objeto e manipular! Apenas preciso mesmo é de alguma idéia de como fazer tal 'inversão' só com o que vi até agora no livro. Ok?

Abraço e agradeço desde já qualquer ajuda.

-------------------------
Visitem meu novo Java Blog para iniciantes:
http://giancarlobraga.joolo.com/




adolfo_eloy
JavaChild
[Avatar]

Membro desde: 26/02/2007 11:01:04
Mensagens: 110
Localização: São Paulo
Offline

Seguindo seu exercício abaixo:


6.26 Write a method that takes an integer value and returns the number with its digits reversed. For example, given the number 7631, the method should return 1367. Incorporate the method into an application that reads a value from the user and displays the result.


primeiramente vc precisa converter isso para um String e depois um for
regressivo pode ser usado conforme o código abaixo :




Falow

Adolfo Eloy

"Stay hungry, Stay foolish"
Aldrin Leal
JavaEvangelist
[Avatar]

Membro desde: 10/07/2007 17:04:34
Mensagens: 330
Localização: Belem / PA / Brazil
Offline

Utilizando matemática:

int i0 = 7631;
int i = 0;

while (i0 > 0) {
i *= 10;
i += (i0 % 10);
i0 /= 10;
}

(Não testei, mas a idéia deve ser clara :])

-- Aldrin Leal, http://www.leal.eng.br/mnemetica/
[WWW] [MSN]
GiancarloBraga
Java Ninja
[Avatar]

Membro desde: 25/06/2007 06:00:00
Mensagens: 261
Offline

Gente, muito obrigado pelas respostas.
Realmente ajudaram muito!

adolfo_eloy, eu vou guardar o script feito por você para estudá-lo mais para frente. Eu ainda não estudei até agora a conversão, nem os métodos toString e subString. Mas mais para frente será útil sem dúvida alguma! Muito obrigado.

Aldrin Leal, você captou exatamente o que eu precisava. Cara, eu nunca ia chegar nesse algoritmo só pelo que o DEITEL ensinou no livro. Eu acho que ele pecou um pouquinho em não dar um exemplo dessa 'inversão', afinal essa lógica é um tanto quanto adversa em relação às demais.

Eu vou postar o código para quem se interessar pelo assunto ou para os fãs do google que futuramente chegarão através do mesmo aqui ao GUJ!

O código FUNCIONA.







E por fim, olhe a saída do código tendo digitado no input o número dado no enunciado:

Digite a seguir o número a ser invertido: 7631
O número invertido é: 1367.




Abraços e obrigado novamente pela ajuda,
Giancarlo.






-------------------------
Visitem meu novo Java Blog para iniciantes:
http://giancarlobraga.joolo.com/




faviandrade
Entusiasta Java
[Avatar]

Membro desde: 26/09/2009 09:21:17
Mensagens: 22
Localização: Ribeirão Preto
Offline

Boa tarde, estou estudando java tb.. e estou tentando entender a lógica utilizada

Utilizando matemática:



eu realizei o meu baseando nisto:



Deu certo, executou o que eu estava precisando, (eu modifiquei (simplifiqueis as operações para tentar entender o que ele estava fazendo) confesso que não entendi, poderiam me explicar por favor...
pq.. pelo teste que identifiquei ali.. o numeroInverte é maior que zero no primeiro momento, então ele entra no looping, ai... ele pega o numeroInvertido que no momento é zero e multiplica por 10, ou seja .. resulta em 0 , ai depois ele armazena nesta váriavel o resto da divisão do numeroInverte, e ai divide o número inverte por 10 ,
sinceramente não to entendendo o que ele esta executando...

Grato.
[Email] [MSN]
gasmg
Smalltalk
[Avatar]

Membro desde: 25/09/2011 17:41:12
Mensagens: 2
Offline

This message was edited 1 time. Last update was at 25/09/2011 19:00:26

gasmg
Smalltalk
[Avatar]

Membro desde: 25/09/2011 17:41:12
Mensagens: 2
Offline

Espero ter ajudado.
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline

gasmg wrote:Espero ter ajudado.


Oi gasmg, bem-vindo ao fórum.
Cuidado ao ressuscitar tópicos muito antigos. Se for faze-lo (como o caso desse, de 1 ano e meio atrás, que estava sem resposta), pelo menos evidencie isso na sua postagem.

Ao postar códigos, use também a tag code, para deixa-lo formatado. Veja como aqui:
http://www.guj.com.br/java/50115-voce-e-novo-no-guj-vai-criar-um-topico-e-colar-seu-codigo-fonte-leia-aqui-antes-por-favor

This message was edited 1 time. Last update was at 25/09/2011 19:02:04


@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
lgdelai
Smalltalk

Membro desde: 13/07/2011 18:52:11
Mensagens: 1
Offline

gasmg wrote:Espero ter ajudado.


Eu não consegui compreender a lógica por trás disto, peço desculpas pela minha ignorancia.

Alguém poderia dizer, fora do código, o que o programa faz?

Obrigado.
zeroc00l
Smalltalk

Membro desde: 06/01/2012 20:24:39
Mensagens: 1
Offline

Ola pessoal o exercício proposta na apostila que adquiri para estudar é o seguinte :

Desenvolva um programa que solicita ao usuário um número inteiro de no máximo 4 dígitos. Inverta esse número.

o que eu fiz para resolver este problema foi:



Gostaria que por gentileza alguém me confirma-se se desta forma esta correta ou se na opção para delimitar uma quantidade de valores isso deveria ser feito de uma outra forma.
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team