Java - Error al importar Scanner

 
Vista:
sin imagen de perfil

Error al importar Scanner

Publicado por Gustavo (2 intervenciones) el 02/11/2022 15:27:10
Les consulto por 2 errores que me tira el compilador de java. Uso el block de notas como editor. He guardado el .java con codif. UTF-8 y luego con ANSI. Estoy trabajando con Windows 10.

Les transcribo el programa y luego los errores (primero cuando guardo con UTF-8 y luego con ANSI)

import java.util.Scanner;

public class Vacaciones{
public static void main(String args[]){

Scanner in = new Scanner(System.in);
String nombre = "";
int antiguedad = 0, clave = 0;

System.out.printLn("¿Cuál es su nombre?");
nombre = in.nextLine(System.in);
System.out.printLn("¿Cuántos años de servicio tiene el trabajador?");
antiguedad = in.nextInt(System.in);
System.out.printLn("¿Cuál es su clave de Departamento?");
clave = in.nextInt(System.in);


if (clave == 1 && antiguedad == 1){
System.out.printLn(nombre + " tiene derecho a 6 dias de vacaciones");
} else if(clave == 1 && antiguedad >= 2 && antiguedad <=6){
System.out.printLn(nombre + " tiene derecho a 14 dias de vacaciones");
} else if (clave == 1 && antiguedad >=7){
System.out.printLn(nombre + " tiene derecho a 20 dias de vacaciones");
} else if (clave == 2 && antiguedad == 1){
System.out.printLn(nombre + " tiene derecho a 7 dias de vacaciones");
} else if(clave == 2 && antiguedad >= 2 && antiguedad <=6){
System.out.printLn(nombre + " tiene derecho a 15 dias de vacaciones");
} else if (clave == 2 && antiguedad >=7){
System.out.printLn(nombre + " tiene derecho a 22 dias de vacaciones");
} else if (clave == 3 && antiguedad == 1){
System.out.printLn(nombre + " tiene derecho a 10 dias de vacaciones");
} else if(clave == 3 && antiguedad >= 2 && antiguedad <=6){
System.out.printLn(nombre + " tiene derecho a 20 dias de vacaciones");
} else if (clave == 3 && antiguedad >=7){
System.out.printLn(nombre + " tiene derecho a 30 dias de vacaciones");
} else if (antiguedad < 1){
System.out.printLn("Aún no tiene derecho a vacaciones");
} else {
System.out.printLn("Error, la clave ingresada no existe.");
}


}

---Cuando guardo Vacaciones.java con cod. UTF-8, me salen estos 2 errores cuando compilo:

C:\Users\Gustavo\Downloads>javac Vacaciones.java
Vacaciones.java:1: error: illegal character: '\ufeff'
?import java.util.Scanner;
^
Vacaciones.java:1: error: class, interface, enum, or record expected
?import java.util.Scanner;

----Cuando guardo Vacaciones.java con cod. ANSI, me salen estos 8 errores:

C:\Users\Gustavo\Downloads>javac Vacaciones.java
Vacaciones.java:10: error: unmappable character (0xBF) for encoding UTF-8
System.out.printLn("?Cu?l es su nombre?");
^
Vacaciones.java:10: error: unmappable character (0xE1) for encoding UTF-8
System.out.printLn("?Cu?l es su nombre?");
^
Vacaciones.java:12: error: unmappable character (0xBF) for encoding UTF-8
System.out.printLn("?Cu?ntos a?os de servicio tiene el trabajador?");
^
Vacaciones.java:12: error: unmappable character (0xE1) for encoding UTF-8
System.out.printLn("?Cu?ntos a?os de servicio tiene el trabajador?");
^
Vacaciones.java:12: error: unmappable character (0xF1) for encoding UTF-8
System.out.printLn("?Cu?ntos a?os de servicio tiene el trabajador?");
^
Vacaciones.java:14: error: unmappable character (0xBF) for encoding UTF-8
System.out.printLn("?Cu?l es su clave de Departamento?");
^
Vacaciones.java:14: error: unmappable character (0xE1) for encoding UTF-8
System.out.printLn("?Cu?l es su clave de Departamento?");
^
Vacaciones.java:37: error: unmappable character (0xFA) for encoding UTF-8
System.out.printLn("A?n no tiene derecho a vacaciones");
^
8 errors
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Error al importar Scanner

Publicado por Kabuto (1381 intervenciones) el 02/11/2022 18:52:40
Pues no se decirte.
He probado yo mismo guardando como UTF-8 y no hay problema en cuanto a caracteres raros.

Si hay errores de sintaxis:

- Los println() se escribe todo minúscula, ninguna letra va en mayúscula

MAL:
1
System.out.printLn
BIEN:
1
System.out.println

- Los métodos para leer por teclado, no han de recibir ningún argumento en los paréntesis.

MAL:
1
clave = in.nextInt(System.in);
BIEN:
1
clave = in.nextInt();




Pero en cuanto a tu problema con el juego de caracteres, pues no sé que está pasando. No se si servirá que borres todo el texto, guardes el archivo (UTF-8 siempre) y vuelvas a escribir de nuevo el código.
A veces en nuestro texto se cuelan caracteres especiales que no vemos porque no tienen representación gráfica, pero sí tienen representación interna y pueden confundir al compilador.

Sí recomendaría usar otro programa que no sea el Bloc de Notas.
Si no quieres usar IDE de desarrollo más avanzados como Eclipse, NetBeans, IntelliJ, etc.... tienes alternativas algo mejores que el Bloc de Notas.
Puedes usar [code=https://notepad-plus-plus.org/downloads/]NotePad++[/code], no es un IDE avanzado, pero si un editor de texto bastante completo y a la hora de escribir código ayuda un poco porque resalta en colores las instrucciones del lenguaje en el que estemos codificando y sirve por ejemplo para identificar errores de sintaxis como el de "printLn()"

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Error al importar Scanner

Publicado por Gustavo (2 intervenciones) el 02/11/2022 23:45:08
Estimado Kabuto, le tengo que agradecer en suma medida la rapida y completa respuesta. Le hice caso y comence a usar a usar Notepad++(facilita la tarea enormemente). No usaba IDE ni editores profesionales porque, como verá, estoy iniciandome en éste lenguaje y el profe que da el curso por video nos recomienda usar Block de notas que, según él, nos facilitará la retención de sintaxis y el desarrollo de la habilidad será mayor.
Pues bien, al principio usé el Notepad++ para crear el programa (con las correcciones sugeridas por Ud.) y al guardar tanto con Cod. UTF-8 sin Bom (no sé que es) como con cod. ANSI me surgian los errores. Decidí cambiar el lenguaje de Windows a Inglés, reinicié la PC y volví con el Notepad++ abriendo el archivo: para sorpresa mia todo funcionó bien en el CMD tanto con una u otra codificación.
Muchas gracias por todo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar