当前位置: 首页 > 面试题库 >

谁能告诉我为什么它给我未初始化的变量?

太叔昊穹
2023-03-14
问题内容

每次尝试编译时,它表明d1变量可能未初始化。我认为可能是问题所在else if。告诉我如何在中运行2条语句else if

import java.util.Scanner;
class IDC {

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);

        System.out.println("                        ");
        System.out.println("Input ID card no...");

        String x = scan.next();


        x = x.substring(0, x.length() - 1); //removing the last char of the string

        String CardNo = x;

        String y = x = x.substring(0, x.length() - 7); //birthday

        y = "19" + y; //birth year = y




        String CardNO1 = CardNo.substring(0, CardNo.length() - 4);

        //System.out.println(CardNO1);

        CardNO1 = CardNO1.substring(2);

        //System.out.println(CardNO1);

        //gender

        int g = Integer.parseInt(CardNO1); //converting string to int
        String G;
        if (g < 500) {
            G = "Male";
        } else {
            G = "female";
        }
        //System.out.println(G);
        double C = Integer.parseInt(CardNO1);
        if (C > 500) {
            C = C - 500;
        } else {
            C = C;
        }
        //calculating month and the day of birth

        double d1;
        int Month;
        //

        if (C < 31) {
            Month = 1;
            d1 = C;
        } else if (C <= 60) {
            Month = 2;
            d1 = C - 31;
        } else if (C <= 91) {
            Month = 3;
            d1 = C - 60;
        } else if (C <= 121) {
            Month = 4;
            d1 = C - 91;
        } else if (C <= 152) {
            Month = 5;
            d1 = C - 121;
        } else if (C <= 182) {
            Month = 6;
            d1 = C - 152;
        } else if (C <= 213) {
            Month = 7;
            d1 = C - 182;
        } else if (C <= 244) {
            Month = 8;
            d1 = C - 213;
        } else if (C <= 274) {
            Month = 9;
            d1 = C - 244;
        } else if (C <= 305) {
            Month = 10;
            d1 = C - 274;
        } else if (C <= 335) {
            Month = 11;
            d1 = C - 305;
        } else if (C <= 366) {
            Month = 12;
            d1 = C - 335;
        } else {
            Month = 00;
        }
        //double d1;

        System.out.println("                        ");

        System.out.println("Your Birthday...  ");
        System.out.println("Date.." + d1);
        System.out.print("Month.. " + Month);
        System.out.println("  Year.. " + y);

        System.out.println("                        ");

        System.out.println("Your Gender...");
        System.out.println(G);

    }

}

问题答案:

d1不在else块中且仅在if或else if块中初始化,因此,如果if()和elseif()块中的所有语句均为false,则控制器进入else块,而d1仍然不是初始化。因此,当您尝试在system.out.println()中访问它时,编译器正确地抛出该错误。您可能想在一开始将值初始化为0。



 类似资料:
  • 以下项目是从一个在线课程中逐字复制的。它应该显示一个ListView,但什么也不显示。我是一个全新的Android工作室,这只是我在里面的第二个项目。这里有5个文件,我将在下面显示每个文件的内容。我只需要另一双或两双眼睛来发现问题,因为我是“虫子盲”。任何帮助都将不胜感激。 activity_main.xml OurAdapter.java 包com.example.tadhg.uiuxAdapt

  • print语句会导致以下编译时错误, 局部变量f可能尚未初始化 如果Java中的原语已经有一个默认值(float=0.0f),为什么我需要定义一个呢? 所以,这是有效的 谢谢大家!

  • python指标代码pymetrics可用于分析代码文件的复杂性。它们创建了两个不同的指标: 整个文件的COCOMO 2的SLOC度量 我想知道这些指标的数值意味着什么,而不是它们的定义。值“1”是什么意思?一个数字‘5’?一个“10”的数字?越高越好还是越低越好?什么数值指的是好代码,什么指的是真正的坏代码?上网搜了一下,给了一些提示,但我不确定分类指的是公制(1)还是公制(2)。我想让这两个数

  • 在我的Wordpress站点中,我有一个自定义的PHP搜索。它通过“include”出现在特定页面的内容部分,因此它是一个单独的文件。 http://www.glutenfreeireland.com/accoloration/find-accoloration/ 搜索和结果的整个代码显示在DIV.whereToeatSearchWrapper中。不幸的是,在文本“Step 1:Choose a

  • 我试图解决这个问题:第三个最大数量 但我犯了这个错误 第4行:Char 37:运行时错误:有符号整数溢出:-9223372036854775808-10不能在类型“long long”(solution.cpp)摘要中表示:UndefinedBehaviorSanitizer:undefined behavior prog_joined。cpp:13:37 这是我的代码 有人能告诉我这个错误到底意

  • 我使用的是Netbeans,编译器说变量可能没有初始化。这是什么意思?