为什么我不能在Java中的开关内初始化变量?
发布时间:2020-12-15 05:21:51 所属栏目:Java 来源:网络整理
导读:我只是编程的初学者,所以我无法找到解决这个问题的方法.现有的问题似乎是用其他语言,或者是我的头脑. 我正在尝试编写一个小程序,用于返回任何给定日期输入的特定于周的日期. import java.util.*;class bday {public static void main(String[] args){ Scanne
我只是编程的初学者,所以我无法找到解决这个问题的方法.现有的问题似乎是用其他语言,或者是我的头脑.
我正在尝试编写一个小程序,用于返回任何给定日期输入的特定于周的日期. import java.util.*; class bday { public static void main(String[] args){ Scanner yearfinder = new Scanner(System.in); System.out.println("Please type any year"); int year = yearfinder.nextInt(); Scanner monthfinder = new Scanner(System.in); System.out.println("Please type any month"); String textmonth = monthfinder.nextLine(); int month; switch(textmonth) { case ("january"): month = 1; break; case ("february"): month = 2; break; case ("march"): month = 3; break; case ("april"): month = 4; break; case ("may"): month = 5; break; case ("june"): month = 6; break; case ("july"): month = 7; break; case ("august"): month = 8; break; case ("september"): month = 9; break; case ("october"): month = 10; break; case ("november"): month = 11; break; case ("december"): month = 12; break; default: System.out.println("The month you input was invalid"); } Scanner datefinder = new Scanner(System.in); System.out.println("Please type any day"); int date = datefinder.nextInt(); System.out.println("The date you gave was " + date + "/" + month + "/" + year); } } //Jan 1 1900 was a monday. 编译它会给出一个错误,指出“变量月份可能尚未初始化”,同时指向println语句中的“月份”.任何一个案例中的初始化是无效的还是什么?我在交换机外面声明了月份变量… 解决方法
与其他回复相反,您无需在声明时初始化月份.
问题是如果textmonth不是文字值,则执行将落到默认情况,其中month不会被初始化. 您可以将其初始化为无效值,在默认情况下为0,但也许更好的选择是提供错误消息并中止执行. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |