Programa Quiniela Deportiva

Iniciado por MicroHack, 17 Enero 2011, 19:02 PM

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

MicroHack

Hola,

estoy aprendiendo vb.net y tengo que realizar un ejercicio usando arrays en el cual se solicita al usuario los resultados de un evento.

El programa funciona correctamente, solo que ahora quiero limitar y controlar el "valor" que el usuario introduce para que no sea diferente de "1", "X" o "2"

Para ello he querido usar un While, pero parece que algo falla porque no puedo indicarle los 3 valores a la vez.

Código (vbnet) [Seleccionar]
  Dim _var As Char

               Console.Write("1º Pronostico: ")
               _var = CChar(Console.ReadLine())

               While _var <> "1"c Or "2 c Or "X"c Or "x"  ' (Aqui es donde me da el Error)

                   Console.WriteLine("ERROR, Inique un valor entre 1/X/2: ")
                   Console.ReadLine()
               
               End While


¿Alguna idea de porque no funciona?
Hola cariño, pasa por favor, y cierra la puerta al entrar. No quiero que se oigan los disparos fuera.

79137913

#1
HOLA!!!

Esto va en .NET (Programacion Gral) MOD: JAJAJA, NO DURO MUCHO EN VB6 XD.

Código (vbnet) [Seleccionar]
While _var <> "1"c Or "2 c Or "X"c Or "x"

Primero, te faltan comillas en el 2, Suponiendo que sea VB6 repeti la condicion completa en cada una, y la "c" que pones despues del string no se para que es.

Aunque no veo ningun Vector(array) asi lo arreglaria yo:
Código (vbnet) [Seleccionar]

While _var <> "1" Or _var <> "2" Or  _var <>"X" Or _var <> "x"




GRACIAS POR LEER!!!
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

79137913                          *Shadow Scouts Team*

MicroHack

Cita de: 79137913 en 17 Enero 2011, 19:22 PM
HOLA!!!

Esto va en .NET (Programacion Gral) MOD: JAJAJA, NO DURO MUCHO EN VB6 XD.

Código (vbnet) [Seleccionar]
While _var <> "1"c Or "2 c Or "X"c Or "x"

Primero, te faltan comillas en el 2, Suponiendo que sea VB6 repeti la condicion completa en cada una, y la "c" que pones despues del string no se para que es.

Aunque no veo ningun Vector(array) asi lo arreglaria yo:
Código (vbnet) [Seleccionar]

While _var <> "1" Or _var <> "2" Or  _var <>"X" Or _var <> "x"




GRACIAS POR LEER!!!

Perdon por ponerlo donde no era, lo de las comillas lo escribi mal aqui pero en el editor las tengo puestas.

Y poner:

Código (vbnet) [Seleccionar]

While _var <> "1" Or _var <> "2" Or  _var <>"X" Or _var <> "x"


Tampoco funciona porque lo probe antes, uso el VB.NET en Visual Studio 2010

Hola cariño, pasa por favor, y cierra la puerta al entrar. No quiero que se oigan los disparos fuera.

.mokk.

#3
Gran error aqui mira

Console.WriteLine("ERROR, Inique un valor entre 1/X/2: ")
                   Console.ReadLine()


Porque no estas volviendo a asignarle el nuevo valor a _var y am en el while tmb esta incorrecto a como lo colocastes, podrias tambien usar un IF si se te es mas facil o talves un switch(creo que aqui es select case)

P.D. la letra c es alguna variable ? si es asi esta bien colocarla en el while si no lo es solo deberia funcionar usando


while _var <> 1 or _var <> 2 or _var <> "x"
'Codigo
Console.WriteLine("ERROR, Inique un valor entre 1/X/2: ")
                    _var = Console.ReadLine()
end while


79137913: Segun recuerdo en VB.net no difiere mayuscula o minuscula por lo que
_var <> "X" or _var <> "x"
seria lo mismo con solo colocar uno no?

MicroHack

No funciona de esa manera.

Nose, tiene que haber una sintaxis para que el while pueda concadenar condiciones y comprobarlas en una misma linea.  >:(
Hola cariño, pasa por favor, y cierra la puerta al entrar. No quiero que se oigan los disparos fuera.

.mokk.

#5
O si se me habi pasado xD

en ves de Or, es And , porque usando or esque si alguna de esas se cumple repetira el while, lo cual lo que deceamos esque solo se repita si todas es lo mismo osea True, en fin el codigo quedaria asi:

Código (vb.net) [Seleccionar]
   Dim _var As Char

        Console.Write("1º Pronostico: ")
        _var = CChar(Console.ReadLine())

        While _var <> "1" And _var <> "2" And _var <> "X" And _var <> "x"

            Console.WriteLine("ERROR, Inique un valor entre 1/X/2: ")
            _var = CChar(Console.ReadLine())

        End While


Tenian razon sobre lo de "X" y "x", el programa si nota la diferencia, me disculpo por mi ignorancia en ese aspecto. jeje

MicroHack

#6
EDIT: Esta es la sintaxis correcta



While (_var <> "1"c And _var <> "2"c And _var <> "x"c And _var <> "X"c)
    Console.WriteLine("ERROR, Inique un valor entre 1/X/2: ")
                    _var = CChar(Console.ReadLine())



Ahora si me funciona, gracias a todos.
Hola cariño, pasa por favor, y cierra la puerta al entrar. No quiero que se oigan los disparos fuera.

79137913

#7
HOLA!!!

Cita de: .mokk. en 17 Enero 2011, 19:45 PM
79137913: Segun recuerdo en VB.net no difiere mayuscula o minuscula por lo que
_var <> "X" or _var <> "x"
seria lo mismo con solo colocar uno no?

En cuanto a manejo de variables no diferencia entre mayusculas y minusculas, pero en manejo de strings (cadenas de texto) si diferencia, * si osea si pones un in que sea x=X va a ser true, pero si pones un if que sea "x"="X" va a ser false.

*MOD: Para que no diferencie, tendrias que hacer algo asi UCase("x")=UCase("X") o sino LCase("x")=LCase("X")

GRACIAS POR LEER!!!
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

79137913                          *Shadow Scouts Team*