**Acerca del código: solo estoy creando un código simple usando una declaración de cambio. Todos los casos de interruptores funcionan bien, excepto los casos de dos dígitos. Me sale un error diciendo:
year.java:37: error: unclosed character literal case '10'
year.java:40: error: unclosed character literal case '11':year.java:43: error: unclosed character literal case '12'
Código:
import java.util.Scanner; public class year { public static void main(String[] args) { Scanner input = new Scanner(System.in); char year; System.out.println("Enter the number of the month "); year = input.next().charAt(0); switch(year){ case '1': System.out.println("January"); break; case '2': System.out.println("Febraury"); break; case '3': System.out.println("March"); break; case '4': System.out.println("April"); break; case '5': System.out.println("May"); break; case '6': System.out.println("June "); break; case '7': System.out.println("July"); break; case '8': System.out.println("August "); break; case '9': System.out.println("September "); break; case '10': System.out.println("October"); break; case '11': System.out.println("November"); break; case '12' System.out.println("December"); break; default: System.out.println("Invalid"); } input.close(); } }Intenté hacer algunos cambios aquí y allá, pero no pude entenderlos y, por lo tanto, no pude hacerlo.
Su year variable es un carácter. Un char solo puede ser un solo carácter.
Por lo tanto, cuando intenta hacer '11' o '12' , se encuentra con problemas ya que estos "caracteres" consisten en más de un carácter.
La solución rápida aquí sería usar String en lugar de char, usando input.next() sin .charAt(0) . Luego, deberá cambiar las declaraciones de su caso para usar comillas dobles en lugar de comillas simples.
Alternativamente, podría hacer Integer.parseInt(input.next()) y luego activar un int en su lugar, como sugirió @Tom.
En primer lugar, hay un error de sintaxis en case '12' , debería ser case '12': (Además, la sangría del código es mala. La sangría deficiente dificulta la depuración)
Le sugiero que convierta este código en uno basado en String . Por favor, consulte el ejemplo completo a continuación. Char puede obtener un solo carácter y un char year; causar un error, porque en valores de entrada como 10, 11, 12 no funcionará como se esperaba
import java.util.Scanner; public class year { public static void main(String[] args) { Scanner input = new Scanner(System.in); String year; System.out.println("Enter the number of the month "); year = input.nextLine(); switch(year){ case "1": System.out.println("January"); break; case "2": System.out.println("Febraury"); break; case "3": System.out.println("March"); break; case "4": System.out.println("April"); break; case "5": System.out.println("May"); break; case "6": System.out.println("June "); break; case "7": System.out.println("July"); break; case "8": System.out.println("August "); break; case "9": System.out.println("September "); break; case "10": System.out.println("October"); break; case "11": System.out.println("November"); break; case "12": System.out.println("December"); break; default: System.out.println("Invalid"); } input.close(); } }