标志永远不会初始化

时间:2015-11-06 01:30:58

标签: java initialization boolean

我创建了一个匹配两个txt文件的程序。我得到编译错误,标志永远不会被初始化,但我不知道为什么。应该运行for循环,if else应该初始化标志。任何帮助,将不胜感激。谢谢!

public static void main(String[] args) throws IOException
{
    boolean flag;
    File f = new File(args[0]);
    Scanner sc = new Scanner(f);
    File f2 = new File(args[1]);
    Scanner sc2 = new Scanner(f2);
    int line = 1;
    String t1 = "";
    String t2 = "";

    while(sc.hasNextLine() && sc2.hasNextLine())
    {
        String line1 = sc.nextLine().toUpperCase();
        String line2 = sc2.nextLine().toUpperCase();

        for(int i = 0; i < line; i++)
        {
            if(line1.substring(0,i).equals(line2.substring(0,i)))
            {
                flag = false;
                t1 = line1.substring(0,i);
                t2 = line2.substring(0,i);
                System.out.print("");
            }
            else
            {
                flag = true;
                t1 = line1.substring(0,i);
                t2 = line2.substring(0,i);
                System.out.print("");
            }
        }

        if(flag == true)
        {
            System.out.println("Line # " + line + ": Matching " + line + "character/s true" + "**" + t1 + "**" + t1 + "**");

        }
        else
        {
            System.out.println("Line # " + line + ": Matching " + line + "character/s false" + "**" + t1 + "**" + t2 + "**");
        }
        line += 1;
    } 
}

}

1 个答案:

答案 0 :(得分:0)

在你的主要功能的顶部,它因为这一行而抱怨:

boolean flag;

您需要初始化此变量。什么是默认行为?如果for循环永远不会运行,那么该值应该是什么?

例如,如果传递函数两个空文件(或一个空文件)怎么办?然后,你的while循环:

while(sc.hasNextLine() && sc2.hasNextLine())

将是假的,并且旗帜永远不会被设置。这就是编译器抱怨的原因。