Galera, gostaria de uma ajuda nesse exercício para saber onde foi que errei! Eu já achei em um tópico antigo sobre o mesmo exercício:
Eu também já até postei sobre ele, esta minha dúvida por lá, porém, visando ficar em mais evidência a minha dúvida optei por criar este tópico para obter uma ajuda sobre onde que eu errei. Fiz uma solução para esse exercício (um milhão de variáveis, rsrs), entretanto, o mesmo não executa a inversão de valores para centenas e milhares, o programa só inverte os valores em dezenas mesmo quando o valor inserido é milhar ou centena. Aí que está: “a lógica não é a correta para esse exercício, não entendi o porque?”. Segue abaixo para que, por favor, alguém me dê uma luz de onde eu errei e desculpe qualquer coisa aí sobre repetir o tópico ou ter criado este tópico de forma errada (talvez, devido a duplicidade)!
import java.util.Scanner;
/* 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.
*/
public class DigitosInvertidos {
private int num;
private int numDez;
private int numCent;
private int numMil;
private int dez1;
private int dez2;
private int cent1;
private int cent2;
private int cent3;
private int mil1;
private int mil2;
private int mil3;
private int mil4;
Scanner input = new Scanner(System.in);
// método para obter o valor e testar seu tamanho para a inversão
public void obtemValor(){
System.out.println("Informe um valor entre (10 e 9999):");
num = input.nextInt();
while ( num < 10 || num > 9999 ) {
System.out.println("Entrada Inválida! Informe um valor entre (10 e 9999):");
num = input.nextInt();
}
if (num >= 10 || num <= 99) {
numDez = num;
dez2 = numDez % 10;
numDez = numDez / 10;
dez1 = numDez % 10;
System.out.printf("O valor invertido é: %d%d\n", dez2, dez1);
} else if (num >= 100 || num <= 999) {
numCent = num;
cent3 = numCent % 10;
numCent = numCent / 10;
cent2 = numCent % 10;
numCent = numCent / 10;
cent1 = numCent % 10;
System.out.printf("O valor invertido é: %d%d%d\n", cent3, cent2, cent1);
} else if (num >= 1000 || num <= 9999) {
numMil = num;
mil4 = numMil % 10;
numMil = numMil / 10;
mil3 = numMil % 10;
numMil = numMil / 10;
mil2 = numMil % 10;
numMil = numMil / 10;
mil1 = numMil % 10;
System.out.printf("O valor invertido é: %d%d%d%d\n", mil4, mil3, mil2, mil1);
}
}
}
public class TestaDigitosInvertidos {
public static void main(String[] args) {
DigitosInvertidos testa = new DigitosInvertidos();
testa.obtemValor();
}
}
Lembrando que o “||” = “ou” e “&&” = e . E para essa condição você tem que fazer uma comparação do tipo "valor maior ou igual a x E valor menor ou igual a y " , porque senão com o “ou” ele ja entra direto na primeira condição que você tiver. Ex: 9999 é maior ou igual a ( na primeira condição da sua classe )
[quote=Ruttmann]Cara, antes de te dar uma solução bem fácil eu vou te perguntar:
Você é bem novato na área? Já programou em outras linguagens?
Porque tem um jeito bem fácil que usa muitos menos linhas que isso, usando em vez de int, a classe String…
Mas se você for novato eu te ajudo nessa lógica aí mesmo, pra aprender como funciona…
[/quote]
Sim, estou querendo trabalhar com isso (desenvolimento Java), já trabalhei com teste de software durante um ano mais desejo ir para Java. E difícil eu sei, mais uma hora eu tinha que começar, se a pergunta foi idiota, perdão, mas se eu não perguntasse eu nunca iria saber!
Eu te agradeço a atenção depositada, pois quero saber sobre esta lógica onde foi que eu errei e desculpe qualquer coisa!
[quote=brunoeac][quote=Ruttmann]Cara, antes de te dar uma solução bem fácil eu vou te perguntar:
Você é bem novato na área? Já programou em outras linguagens?
Porque tem um jeito bem fácil que usa muitos menos linhas que isso, usando em vez de int, a classe String…
Mas se você for novato eu te ajudo nessa lógica aí mesmo, pra aprender como funciona…
[/quote]
Sim, estou querendo trabalhar com isso (desenvolimento Java), já trabalhei com teste de software durante um ano mais desejo ir para Java. E difícil eu sei, mais uma hora eu tinha que começar, se a pergunta foi idiota, perdão, mas se eu não perguntasse eu nunca iria saber!
Eu te agradeço a atenção depositada, pois quero saber sobre esta lógica onde foi que eu errei e desculpe qualquer coisa![/quote]
Legal colega, não desiste não, é difícil mas depois vc vê como é legal!
E outra, não existe pergunta idiota, existem respostas idiotas…
Lembrando que o “||” = “ou” e “&&” = e . E para essa condição você tem que fazer uma comparação do tipo "valor maior ou igual a x E valor menor ou igual a y " , porque senão com o “ou” ele ja entra direto na primeira condição que você tiver. Ex: 9999 é maior ou igual a ( na primeira condição da sua classe )
[/quote]
Obrigado malikoski,
Que erro bobo esse, era só trocar o operador lógico de OR para AND!
Te agradeço muito aí pela luz e sua dica deu certo!
[quote=Ruttmann][quote=brunoeac][quote=Ruttmann]Cara, antes de te dar uma solução bem fácil eu vou te perguntar:
Você é bem novato na área? Já programou em outras linguagens?
Porque tem um jeito bem fácil que usa muitos menos linhas que isso, usando em vez de int, a classe String…
Mas se você for novato eu te ajudo nessa lógica aí mesmo, pra aprender como funciona…
[/quote]
Sim, estou querendo trabalhar com isso (desenvolimento Java), já trabalhei com teste de software durante um ano mais desejo ir para Java. E difícil eu sei, mais uma hora eu tinha que começar, se a pergunta foi idiota, perdão, mas se eu não perguntasse eu nunca iria saber!
Eu te agradeço a atenção depositada, pois quero saber sobre esta lógica onde foi que eu errei e desculpe qualquer coisa![/quote]
Legal colega, não desiste não, é difícil mas depois vc vê como é legal!
E outra, não existe pergunta idiota, existem respostas idiotas…
Vou dar uma analisada nessa sua lógica…[/quote]
Resolvido, novamente agradeço aí pela atenção e um dia eu chego lá se Deus quiser!