Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Dem0ny en 2 Noviembre 2008, 12:41 pm



Título: Tonteria con if/else
Publicado por: Dem0ny en 2 Noviembre 2008, 12:41 pm
Bueno pues la cosa ske me he hecho un lio. Hize un programa, que se divide en dos vías segun la elección del usuario. Puse el caracter A como primera elección y la letra T, como segunda elección.

El caso ske tengo ya el programa hecho, en el suceden una serie de operaciónes enfin esta todo mas o menos, pero hay un fallo que no me deja compilar, cosa que veo normal.

en el if pongo que si variable x=='A' pues se toma un camino, y luego el else pongo la variable y=='T' y es donde me da el error. El problema esque no quiero eliminar el agregado a else ya que si pulsan otro caracter, el que sea lo mandaría a esa sección,...

Como podría hacerlo? manteniendo la estructura if/else? gracias.

Saludos!

P.D. estoy en java.


Título: Re: Tonteria con if/else
Publicado por: :ohk<any> en 2 Noviembre 2008, 16:15 pm
Acaso no deberías preguntar en ambos casos por si x=='Variable'  :huh:

Porque veo que preguntas por si x=='A' y luego preguntas por si y=='T', pero que es Y, creo que en todo caso deberías preguntar por si x=='T'   :P


Título: Re: Tonteria con if/else
Publicado por: juancho77 en 2 Noviembre 2008, 18:11 pm
Estructura de un condicional IF-ELSE

Código
  1. if (condicion)
  2.    (instruccion)
  3. else
  4.    (instruccion)

Si las instrucciones tienen mas de una linea de codigo de extension, debemos agregar CORCHETES para definir bloques de ejecucion. Asi:
Código
  1. if (condicion) {
  2.   (instruccion 11)
  3.   (instruccion 12)
  4.   (instruccion 1k)
  5. }
  6. else {
  7.   (instruccion 21)
  8.   (instruccion 22)
  9.   (instruccion 2k)
  10. }
  11.  
Recordar que se puede anidar tambien:


Código
  1. if (condicion 1) {
  2.   (instruccion 11)
  3.   (instruccion 12)
  4.   (instruccion 1k)
  5. }
  6. else if (condicion 2) {
  7.   (instruccion 21)
  8.   (instruccion 22)
  9.   (instruccion 2k)
  10. }
...



Título: Re: Tonteria con if/else
Publicado por: Dem0ny en 2 Noviembre 2008, 18:29 pm
ohk, eso fue fallo mio por no explicarme bien, si lo tengo como tu dices x=='A' y x=='B'


juancho77 lo sé. El problema ske usando el else if, me tire el compilador de java 27 errores nose que hacer me toy haciendo un lio, ske no quiero postear el codigo porke es de un trabajillo y solo tengo fallo en la maldita linea

Saludos!


Título: Re: Tonteria con if/else
Publicado por: -Ramc- en 2 Noviembre 2008, 18:33 pm
javac te dice en que linea esta el error, muestranos ese bloque de código que esta mal solamente.


Título: Re: Tonteria con if/else
Publicado por: Dem0ny en 2 Noviembre 2008, 18:41 pm
Aver que me aclare un poco.

Veamos yo sé que lo tengo mal al escribir esto:

Código:
else (transporte=='T');//Por el contrario si la elección es el Tren, sigue el mismo patron pero con un descuento del 30%

al poner una condición tras el else, pero ske si pongo else if, me salen 27 errores! de "cannont find the symbol" y la mayoría apuntando a las variables es decir por ej. a transporte o demas, y el resto de errores, errores de precisión de float y double, facil de atajar, pero no se porke poniendo else if y la condición me da mas errores, si fue con else con el que metí el buen huevo y se me olvido el if. Debería dar mas con la primera forma no?. Weno... recomiendan? meto el if e intento arreglar todos los errores... pero ... lo del symbol que es? alomejor si tengo una variable en una operación x= y * 2    me pone lo del simbol en la y por ej. y digo lol que es esto aki?

Saludos, gracias de antemano


Título: Re: Tonteria con if/else
Publicado por: juancho77 en 2 Noviembre 2008, 18:58 pm
Citar
pero no se porke poniendo else if y la condición me da mas errores, si fue con else con el que metí el buen huevo y se me olvido el if. Debería dar mas con la primera forma no?

La mayoria de los compiladores Java (el que yo uso al menos) primero recorren el codigo en busca de errores de Parsing, Sintaxis, etc. Luego, SI todo esta bien escrito busca errores de Cast, de declaracion de variables, etc. El codigo que me pasaste tiene mal declaradas las variables, mal hechos los casting, y ademas estas usando objetos de System sin tirar excepciones.


Título: Re: Tonteria con if/else
Publicado por: -Ramc- en 2 Noviembre 2008, 19:37 pm
Aver que me aclare un poco.

Veamos yo sé que lo tengo mal al escribir esto:

Código:
else (transporte=='T');//Por el contrario si la elección es el Tren, sigue el mismo patron pero con un descuento del 30%
Porque hay un ; después de la condición del else, transporte es una varialbe de que tipo?.

else no puede llevar condición, porque es la opción final sino fue ninguna de las anteriores, para poner una condición mas, como dices debe ser un else if.


Título: Re: Tonteria con if/else
Publicado por: Dem0ny en 2 Noviembre 2008, 21:16 pm
Perdon, e estao sin conexión unas horas.

Veamos: efectivamente, el else ese ahi escrito esta mal, fallo mio lo de ; fue un error que no me di cuenta.

Muchas gracias a todos y en especial a juancho77 me ayudo con unos errores que vamos que me hubiera costado encontrarlos, ya que toy empezando con el lenguaje y demas...

Ahora tengo un par de dudas asi rapidas :)

@juancho77: Lo de declarar variables tipo Precio que la declaraba dentro de ellos era para declararlos allí directamente y que el programa no tuviera que subir a ver las variables declaradas y tal nose si me comprendes.

y una corrección que me hizistes que hay algo que no me aclaro o nose me explike mal.

@para todos: En el comienzo de mi programa, yo tengo 2 variables x e y por ej. y a x le tengo asignada el caracter A, y a y tengo asignado el caracter T:

Bien pues cuando le pido que introducca el caracter A o T para hacer una cosa u otra, lo hago mediante la correción que me hizo juancho77:

Via=(char)Integer.parseInt(leer.readLine());

Mediante esta linea se crea un molde, por lo tanto al almacenar los caracteres A y T, como es lógico me da fallo. Ya que acepta numeros como 1, 2, 0 etc.. entonces el programa se me descontrola, como podría yo, sin cambiar a tipo numerico que el caracter A o T se me almacenara en la variable Via para posteriormente compararla y ir a una condición o a otra.

Nose si me explico,

Gracias de antemano.


Título: Re: Tonteria con if/else
Publicado por: -Ramc- en 2 Noviembre 2008, 21:39 pm
Tu lees un String y debes compararlo con equals() o equalsIgnoreCase() que son métodos de la clase String, te recomiendo que uses la clase Scanner para leer.


Título: Re: Tonteria con if/else
Publicado por: Dem0ny en 2 Noviembre 2008, 21:51 pm
Ya esta solucionado con:

Variable=(char)System.in.read();

Ahora me da otro error xDDD:

Citar
Exception in thread "main" java.lang.NumberFormatException: For input string: ""

        at java.lang.NumberFormatException.forInputString(Unknown Source)
        at java.lang.Integer.parseInt(Unknown Source)
        at java.lang.Integer.parseInt(Unknown Source)
        at Ejercicio7.main(Programa7.java:28)

Linea 28: km1=Integer.parseInt(leer.readLine());


Título: Re: Tonteria con if/else
Publicado por: -Ramc- en 2 Noviembre 2008, 22:50 pm
Ese error es porque le pasas algo que no se puede convertir como Integer.


Título: Re: Tonteria con if/else
Publicado por: Dem0ny en 2 Noviembre 2008, 22:56 pm
oPs, no me di cuenta jeje de que ya lo solucione y no e posteao...

Bueno ya está todo solucionado voy a resolver unos problemas en cuanto a operaciones y tal que no me sale los numeros exactos que deben salirme y ya está.

Un saludo y gracias da todos de nuevo