Numeros Capicua

import java.util.Scanner;

class main{
public static void main(String[] args){
Scanner leia = new Scanner(System.in);
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?

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:

2 curtidas

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

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

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();

}

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

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!!!

1 curtida