Ejercicio con while JAVA problema :S

Iniciado por Cazs03, 14 Diciembre 2012, 17:24 PM

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

Cazs03

Bueno este es el enunciado:
Citaruna línea compuesta por secuencias de cuatro unos (1) y un cero (0) sucesivas de 25 de largo
1111011110111101111011110
Y me quedado atascado lo que tengo de momento es lo siguiente:
public class e4
{
public static void main(String[]args)
{
int cero=0;
int uno=0;
int i=0;
while(cero<25 && uno<25 && i<25)
{
i++;
while(uno<4)
{
uno++;
System.out.print("1");
}
while(cero<1)
{
cero++;
System.out.println("0");
}

}
}
}

Si lo ejecutais vereis que me da los primeros 11110 pero no logro repetir la secuencia dios y el lunes tengo un examen!!

Shell Root

#1
Eso es porque, la variable uno la usas en varios procesos, en donde afectan los valores, es decir,

En el inicio de variables uno vale 0.
Entra al ciclo y vale 1.
Entra al segundo ciclo en 1 y sale en 3 -porque la condución dice que se ejecute mientras sea menor a 4-
Cuando vuelve y entra el primer ciclo ya vale 3 y se incrementa a 4.
Cuando va a entrar de nuevo al segundo ciclo no puede porque la variable uno no cumple la condución -que sea menor a 4-, actualmente vale 4 exacto.

De igual forma pasa con la variable cero
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Cazs03

Gracias por la respuesta pero la cuestion esque no logro hacerlo podrias hacerme el codigo de como seria para imprimir el resultado citado??

Isótopo

-El primer while que compruebe i<25.
-El i lo incrementas en los dos while interiores para que cuente cada caracter.
-Cada vez que salgas de los while interiores tienes que resetear sus contadores, si no solo entrará una vez.

-Asus Crosshair IV Formula            
-AMD Phenom II X6 1090T 3.94Ghz @1.38V
-Corsair H70
-Sapphire Radeon HD 6970 2GB Dual-Fan
-G.Skill PIS PC3-17066 4GB 1900MHz 7-9-7-20 @1.65V
-WD Caviar Black 500GB
-Seagate Barracuda Green 2TB x2
-Antec TruePower New 750W Modular
-Cooler Master Dominator CM-690

Cazs03

Gracias tio, ahora lo vi claro y se me ilumino el coco, dejo el codigo por si alguien le hiciera falta como ami entenderlo gracias.

public class e4
{
   public static void main(String[]args)
   {
   int cero=0;
   int uno=0;
   int i=0;
      while(i<25)
      {
      
         while(uno<4)
         {
         uno++;
         i++;
         System.out.print("1");   
         }
         while(cero<1)
         {
         cero++;
         i++;
         System.out.print("0");
         }
      uno=0;
      cero=0;
      }   
   }
}