Numeros Capicua

6 respostas
java
M

import java.util.Scanner;

class main{

public static void main(String[] args){

Scanner leia = new Scanner(<a href="http://System.in">System.in</a>);

int n;

n = leia.nextInt();

int n_invertido = 0, resultado = 0;

int aux = n;

do{

resultado = aux % 10;

aux = aux / 10;

n_invertido = n_invertido * 10 + resultado;

}while(aux != 0);

if(n == n_invertido){

System.out.println(SIM);

}else{

System.out.println(NAO);

}

}

}

// como eu faria pra ler varias entradas seguidas?

6 Respostas

FearX

Eae Matheus, tudo bem?

Bem, como você deve imaginar, para ler varias entradas seguidas você vai precisar colocar seu código num laço de repetição. A única coisa que você precisa definir é qual vai ser a condição para que seu laço termine. Vou exemplificar usando seu código mesmo, e vou explicar as linhas que modifiquei/adicionei

public static void main(String[] args) {
        Scanner leia = new Scanner(System.in);
        int n;
        int n_invertido = 0, resultado = 0;
        int aux;             // Primeiro voce instancia as variaveis, e depois atribui valor
        char opt;           // Cria uma variavel do tipo char para poder verificar se o usuario quer repetir o programa

        do {               //Começa o laço de repetiçao
            n = leia.nextInt();     //Dentro do laço, o usuario vai digitar os dados
         aux = 0;   // 'Zera' a variável
aux = n;
            do {
                resultado = aux % 10;
                aux = aux / 10;
                n_invertido = n_invertido * 10 + resultado;
            } while (aux != 0);
            if (n == n_invertido) {
                System.out.println("SIM");
            } else {
                System.out.println("NAO");
            }
            System.out.println("Deseja rodar novamente? (S/N)");  //Pergunta ao usuario se quer repetir
            opt = leia.next().charAt(0);                          //Checa se o usuario ira repetir (aqui, o correto e fazer uma validacao para checar a resposta do usuario. Voce
            // pode fazer isso usando if/else, switch/case ou outros comandos condicionais
        } while (opt=='S');
    }
}

ATENÇÃO: Se você esquecer do aux=0;, ou seja, de “zerar” a variável aux no laço, seu programa dará errado.
Se ele digitar qualquer coisa diferente de S, o laço irá quebrar. Tem muita coisa que dá pra otimizar ou fazer diferente no código, mas por uma questão mais didática eu deixei assim. Bem, qualquer dúvida, pode perguntar :slight_smile:

M

muito obrigado pela ajuda!
Números Capicua

Um número é CAPICUA quando ele não muda se lido da esquerda para a direita ou da direita para a esquerda. Por exemplo, o número 2002 é um número capicua. Fazer um programa que leia uma quantidade indeterminada de valores inteiros, sempre de 4 dígitos (entre 1000 e 9999), e que imprima SIM ou NAO conforme o número seja capicua ou não. O último valor, que não deverá gerar saída (que é o critério de parada), deve ser igual a 0 (zero).
Esse aqui aqui é enunciado da questão, o critero de parada é quando a entrada for zero

FearX

Certo… pra definir o critério de “parada” basta modificar o seu laço de repeticao! :slight_smile:

Eduardo_Maranata10
public static boolean isCapicua(String numero) {
	if (numero.length() != 4) {
		return false;
	} else {
		char[] charArray = numero.toCharArray();

		if ((charArray[0] == charArray[3]) && (charArray[1] == charArray[2])) {
			return true;
		}

		return false;
	}
}

public static void main(String[] args) {
	Scanner scanner = new Scanner(System.in);
	int i = -1;
	while (i != 0) {
		System.out.println("Coloque o numero");
		String numero = scanner.nextLine();

		if (isCapicua(numero)) {
			System.out.println("Esse numero eh capicua");
		} else {
			System.out.println("Esse numero nao eh capicua");
		}
	}

	scanner.close();

}
M

Na entrada 0 está saindo que não é capicua, nessa entrada “0” como eu faria pra não imprimir nada?

M

import java.util.Scanner;

class main{

public static boolean isCapicua(String numero) {

if (numero.length() != 4) {

return false;

} else {

char[] charArray = numero.toCharArray();
if ((charArray[0] == charArray[3]) && (charArray[1] == charArray[2])) {
			return true;
		}

		return false;
	}
}

public static void main(String[] args) {
	Scanner scanner = new Scanner(System.in);
	String numero = scanner.next();
		while(!(numero.equals("0"))){
			if (isCapicua(numero)) {
				System.out.println("SIM");
			} else {
				System.out.println("NAO");
			}
			numero = scanner.next();
		}
		scanner.close();
}

}

vlw, agora funcionou!!!

Criado 22 de agosto de 2018
Ultima resposta 22 de ago. de 2018
Respostas 6
Participantes 3