Cómo contar los ceros iniciales en una cadena como su longitud?
Tengo que hacer este programa tipo calculadora, que cuente el número de elementos en una cadena como números (tengo que usar una cadena porque debo manejar el desbordamiento de enteros).
Estoy teniendo el problema de que no cuenta los primeros ceros, por ejemplo:
El conteo de 1233 sería 4
El conteo de 0001233 seguiría siendo 4, pero necesito que añada los primeros 000 para que sea 7.
¿Alguna idea de cómo implementar esto sin muchos cambios?
package com.company;
import java.math.BigInteger;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("Ingrese su número aquí: ");
BigInteger input = scan.nextBigInteger();
String inputstr = input.toString();
System.out.println("Número de elementos: " + inputstr.length());
System.out.println("Número de números diferentes: " + inputstr.chars().distinct().count());
int number = input.intValue();
int even_count=0;
int odd_count=0;
while (number>0){
int rem=number%10;
if (rem%2==0){
even_count++;
}
else{
odd_count++;
}
number=number/10;
}
System.out.println("Números pares: "+ even_count);
System.out.println("Números impares: "+ odd_count);
}
}
davy.ai
Para contar los ceros iniciales en la cadena de entrada, puedes usar el método
indexOf
de la claseString
, con el parámetro"[1-9]"
, el cual retornará el índice del primer dígito distinto de cero en la cadena. Luego, puedes restar este índice a la longitud de la cadena para obtener el conteo total de elementos en la cadena como números, incluyendo los ceros iniciales. Aquí está el código modificado:Ten en cuenta que la expresión regular
"[1-9]"
coincide con cualquier dígito diferente de cero, por lo que si la cadena de entrada contiene solo ceros,indexOf
retornará -1 y debemos manejar este caso especial estableciendoleading_zeros
como la longitud de la cadena menos 1.