Un número Duck es aquel que contiene algún cero pero no en su primer dígito.
Por ejemplo, los números 3507, 1234506, 501 son números Duck; y 223344, 1234 y 0113 no son números Duck.
El número para que conserve los ceros iniciales lo leeremos como un String, para ello utilizaremos la clase Scanner de la librería java.util.(método next() para leer datos de tipo String).
Vamos a hacer el programa de dos formas distintas:
En la primera utilizaremos de la clase String el método contains(CharSequence s) que devuelve verdadero o falso si la cadena de texto contiene la secuencia de char que se pasan como parámetro y el método charAt(int index) que devuelve el caracter que ocupa en la cadena de texto la posición que se pasa como parámetro.
En la segunda, una vez que se cumple que el número no empieza por cero, se itera a través de él hasta encontrar un cero, utilizando el método charAt(int index) anteriormente descrito.
import java.util.Scanner;
public class NumeroDuck {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Introduce un número entero: ");
String numero = sc.next();
sc.close();
boolean numeroDuck;
//1º forma, métodos de la clase String
if(numero.contains("0") && numero.charAt(0)!='0'){
numeroDuck = true;
} else {
numeroDuck = false;
}
System.out.printf("%n¿El número %s es un número duck? %s",
numero, numeroDuck?"Sí":"No");
//2º forma, iterando el número
numeroDuck = numero.charAt(0)!='0';
if(numeroDuck){
for(int i=0;i<numero.length();i++){
if(numero.charAt(i)=='0'){
numeroDuck = true;
break;
}
}
}
System.out.printf("%n%n¿El número %s es un número duck? %s",
numero, numeroDuck?"Sí":"No");
}
}
0 Comentarios