我创建了一个匹配两个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;
}
}
}
答案 0 :(得分:0)
在你的主要功能的顶部,它因为这一行而抱怨:
boolean flag;
您需要初始化此变量。什么是默认行为?如果for循环永远不会运行,那么该值应该是什么?
例如,如果传递函数两个空文件(或一个空文件)怎么办?然后,你的while循环:
while(sc.hasNextLine() && sc2.hasNextLine())
将是假的,并且旗帜永远不会被设置。这就是编译器抱怨的原因。