Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

207
Vistas
Mientras Loop funciona con || pero no &&, sin entender ¿Por qué?

El objetivo del programa es tirar dos dados hasta que ambos sumen 6. Cuando usé && en la declaración while, se detiene después de que un dado sea igual a 6. ¿Por qué? ¿No debería && probar la primera condición y luego, si es correcta, probar la segunda?

 while ((diceOne != 6) || (diceTwo != 6)) { diceOne = numberGeneration.Next(1, 7); diceTwo = numberGeneration.Next(1, 7); attempt = ++attempt; Console.WriteLine("Your first dice is: " + diceOne + " your second dice is: " + diceTwo); Console.WriteLine("Press any button to continue"); Console.ReadKey(); } Console.WriteLine("It took you " + attempt); Console.WriteLine("Press any key to continue"); Console.ReadKey();
over 4 years ago · Santiago Trujillo
4 Respuestas
Responde la pregunta

0

Se detiene porque rompes la condición de que un dado sea diferente de 6.

 while ((diceOne != 6) && (diceTwo != 6))

Mientras que se ejecutará mientras ambas condiciones sean verdaderas.

over 4 years ago · Santiago Trujillo Denunciar

0

Estoy de acuerdo con @Pedro, también puede usar la declaración de break en el ciclo while(true) y detener el ciclo cuando ambos dados son iguales a 6:

 while (true) { diceOne = numberGeneration.Next(1, 7); diceTwo = numberGeneration.Next(1, 7); attempt = ++attempt; Console.WriteLine("Your first dice is: " + diceOne + " your second dice is: " + diceTwo); Console.WriteLine("Press any button to continue"); Console.ReadKey(); if (diceOne == 6 && diceTwo == 6) break; } Console.WriteLine("It took you " + attempt); Console.WriteLine("Press any key to continue"); Console.ReadKey();
over 4 years ago · Santiago Trujillo Denunciar

0

Tenga en cuenta que la condición del ciclo while es la condición necesaria y suficiente para continuar el ciclo. (diceOne != 6) && (diceTwo != 6)) dice que "ambos dados no son 6". Cuando ambos dados no son 6, ciertamente desea continuar el bucle, por lo que es una condición suficiente, pero no es una condición necesaria. ¿Cuándo más le gustaría continuar el ciclo? ¡Cuando un dado es 6 y el otro no!

La condición necesaria y suficiente para continuar el bucle es que al menos un dado no sea 6, que es lo que || expresa.

over 4 years ago · Santiago Trujillo Denunciar

0

Otros usuarios ya te han explicado por qué no funciona. Puedo sugerir modificar la declaración while de esta manera:

 while (!(diceOne == 6 && diceTwo == 6))
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda