miércoles, 14 de agosto de 2013

1 + 1 = WTF!



Hola a todos, os voy a poner el ejercicio que he hecho de la calculadora. Ya os digo antes de empezar que está mal, porque no funciona. Os pondré las anotaciones de los errores que me aparecen para que los veáis. Se que tras leer esto van a morir algunos programadores, desde ya pido perdón.

-----
import java.util.Scanner;

public class tema1calculadora {
public static final void main(String args[]) {
String d = "Introduzca el primer número";
String e = "introduzca el segundo número";
String f = "Escribe la operación que quieres realizar: sumar, restar, dividir o multiplicar.";
String h = "El resultado es: ";
String i = "sumar";
String j = "restar";
String k = "multiplicar";
String l = "dividir";
System.out.println(f);
Scanner sc = new Scanner(System.in);
String a = sc.nextLine();
sc.close();
System.out.println(d);
Scanner sc = new Scanner(System.in);
Float b = sc.nextLine();
sc.close();
System.out.println(e);
Scanner sc = new Scanner(System.in);
Float c = sc.nextLine();
sc.close();
if(a.equals (i)){
Float g = b + c;
}
else if (a.equals (j)){
Float g = b + c;
}
else if (a.equals (k)){
Float g = b * c;
}
else  (a.equals (l)){
Float g = b / c;
}
System.out.print(h);
System.out.println(g);
}
}
-----

He marcado los errores en rojo y los voy a poner por orden de aparición:

 -  sc 
Multiple markers at this line
- Scanner cannot be resolved 
to a type
- Duplicate local variable sc

sc.nextLine
Type mismatch: cannot convert from String to Float

(a.equals (l))
Multiple markers at this line
- The left-hand side of an assignment must be a variable
- Syntax error, insert ";" to complete Statement
- Syntax error, insert "AssignmentOperator Expression" to complete 

g
g cannot be resolved to a variable

Esto es todo amigos, podéis comentar las correcciones que veáis, o esperar a que lo corrija para ver donde he fallado.

También quiero preparar como un post "chuleta" sobre la materia del primer tema del curso de @joanjan14.

Os voy contando.

4 comentarios:

  1. Vamos a ver que errores hay por aquí ;)

    ResponderEliminar
  2. 1) Dos variables no pueden tener el mismo nombre. Veo yo por ahí varias declaraciones con nombre "sc".

    2) En este caso no hace falta ir cerrando cada vez (aunque tampoco está mal). Pero con cerrar al final de todo una única vez basta. De hecho no es imprescindible cerrar y funciona si no lo haces, pero es una buena práctica acostumbrarte a ello.

    3) nextLine lee Strings (líneas). Si quieres asignar valor a un float, tendrá que ser nextFloat. Hay otros métodos pero no conviene verlos ahora.

    4) float, int, char.. todos con minúsculas. El único que va en mayúsculas es String y porque ya te comenté que es un poco especial. Lo veremos más adelante.

    5) En un else no se pone condición. Si quieres poner condiciones en el if..else if. El else es como el caso que no corresponde a ninguno de los anteriores.

    6) No hace falta declarar tantas veces "float g", podrías haber añadido "float g;" más arriba y luego simplemente usar igualación "g = b*c;".

    7) Tal como has declarado tu g, se declara en cada if..else if. Por lo que si no entra en ninguno esa variable no existirá y el programa petará, por eso Eclipse te da error. Para solucionarlo, haz lo que te he comentado en el 6).

    Hasta aquí todo más o menos.

    PD: Las correcciones que te acabo de dar tienen algún error, a ver si eres capaz de darte cuenta que me he dejado.

    ResponderEliminar
  3. 8)En la de restar también sumas. Fallo tonto, esa te la perdono ;)

    ResponderEliminar
  4. Anda que ni contestarte XD Lo repaso en cuanto pueda :)

    Gracias!

    ResponderEliminar