[SOLUCIONADO] No me hallo con los contadores en Java.

Iniciado por DaWrench, Julio 18, 2020, 01:59:04 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Julio 18, 2020, 01:59:04 PM Ultima modificación: Julio 31, 2020, 08:59:20 AM por DaWrench
Hola a tod@s!

Hace unas 2 semanas empecé a aprender Java y no hay manera de que entienda los contadores, sobretodo CUÁNDO debo utilizarlos.

Mi metodología de aprendizaje consiste en leer ciertas unidades y luego hacer unos ejercicios resueltos. La cosa es que continúo haciendo ejercicios y después de estar un buen rato intentándolo miro la solución, ¿y qué veo? Un puñetero contador. A continuación les dejo uno de esos ejercicios por si les facilita la explicación:

Pide por teclado un número entero positivo (debemos controlarlo) y muestra  el número de cifras que tiene. Por ejemplo: si introducimos 1250, nos muestre que tiene 4 cifras. Tendremos que controlar si tiene una o mas cifras, al mostrar el mensaje.


Código: php
import java.util.Scanner;
public class CuentaCifrasApp {
 
    public static void main(String[] args) {
 
        Scanner sc = new Scanner(System.in);
        int numero=0;
        do{
            System.out.println("Introduce un numero");
            numero=sc.nextInt();
        }while(numero<0); int contador=0; for (int i=numero;i>0;i/=10){
            //Incrementamos el contador
            contador++;
        }
 
        //Controlamos en el caso de que haya una cifra o mas
        if (contador==1){
            System.out.println("El numero "+numero+ " tiene "+contador+" cifra");
        }else{
            System.out.println("El numero "+numero+ " tiene "+contador+" cifras");
        }
 
    }
}

En este caso (y la mayoría, vaya), no entiendo por qué hay que poner un contador.
Gracias de antemano.

Los contadores no son más que variables que van incrementando su valor, se utilizan generalmente para llevar un control del estado actual de un proceso (loop) , por ejemplo: Teniendo la siguiente lista de valores ([email protected] ,Carlos, No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, Juan, No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, Maria, No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, No tienes permitido ver los links. Registrarse o Entrar a mi cuenta) diseñar un algoritmo que detecte los primeros cinco correos electrónicos en ella y terminar el proceso mostrando los correos electrónicos encontrados:

Código: php

datos = ["[email protected]","Carlos", "[email protected]", "Juan", "[email protected]", "Maria", "[email protected]", "[email protected]", "[email protected]"]
correos = list()
contador = 0
for dato in datos:
if contador >= 5:
print("Se encontraron los primeros cinco correos electrónicos:")
for correo in correos:
print(correo)

quit()
if "@" in dato:
contador = contador + 1
correos.append(dato)



En este programa se recorre cada dato dentro de la lista, si el carácter "@" se encuentra dentro del dato, entonces se aumenta el contador en 1 y se procede a guardar el correo en cuestión en una nueva variable del tipo list. Luego en el primer condicional se evalúa si el contador es mayor o igual a 5, si es así se procede a mostrar los correos encontrados y terminar el programa. Obviamente la forma de detectar si es un correo en este caso es bastante pobre ya que no es la idea, sino entender como funcionan los contadores.
Espero haberte ayudado, cualquier duda que tengas me avisas.

Ser mejor cada día es mi meta

=LKI=

Gracias amig@ pero no termino de comprenderlo. He intentado ejecutar tu programa en netbeans pero tiene varios errores y no sé corregirlos.

Si pudieras explicarme para qué sirve el contador en el programa que yo puse quizás lo entendería mejor.

@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta en el código que pusiste al principio del hilo:

        }while(numero<0); int contador=0; for (int i=numero;i>0;i/=10){
            //Incrementamos el contador
            contador++;

While indica que la iteracion correra hasta que la condicion sea falsa (Si numero es menor a 0, dejara de correr).

Luego el for, consta de tres partes.
Indice de control ;
Condicion Booleana;
Modificacion del indice tras cada bucle;

Tu ultimo if compara la cifra mas pequeña que pueda recibir (1).
Si esta se cumple, el contador aumentará su valor en 1, si es true... tu siguiete valor de cifra será 2.
Si tu condicion es false, el retorno de tu cifra será sólo 1.

En caso de que alguien vea un error en lo que digo, por favor me cite, todos estamos para aprender.

Un saludo!
Es intrigante. ¿Cómo es que esas personas, que son tratadas como ganado en esta aburrida sociedad, no han intentado destruirla?

Shōgo Makishima

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Gracias amig@ pero no termino de comprenderlo. He intentado ejecutar tu programa en netbeans pero tiene varios errores y no sé corregirlos.

Si pudieras explicarme para qué sirve el contador en el programa que yo puse quizás lo entendería mejor.

El código que posteó LKI es python pero aplica el mismo principio. Me parece buena idea que hagas pruebas de escritorio para familiarizarte un poco más con el algoritmo del programa con el cual tienes dudas.

Encontré este vídeo, espero te sirva
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Perdón por no haber respondido hasta ahora.

Como continué con java pero las cosas que seguían no las entendía, empecé a estudiar los fundamentos de la programación. En concreto estoy siguiendo una serie de tutoriales y utilizando Raptor, y la verdad es que ahora cosas como los bucles los entiendo mejor.

Igualmente muchas gracias por estar ahí!