加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

为什么我不能在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,但也许更好的选择是提供错误消息并中止执行.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读