【发布时间】:2016-02-08 06:24:01
【问题描述】:
我是编码新手,我正在尝试制作一个匹配两个文本文件的程序。对于第一行,我匹配第一个字符,第二行匹配两个字符,依此类推,直到其中一个文件结束。
这就是问题所在。如果该行没有足够的字符,您只比较存在的字符,如果两行 99 都有"abc",那么它将被视为匹配。
如果不引发错误,我似乎无法满足此要求,因为如果字符数少于行数,charAt() 正在读取 null。谢谢您的帮助!
代码:
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 = "";
String work = "";
while(sc.hasNext() && sc2.hasNext())
{
String line1 = sc.nextLine().toUpperCase();
String line2 = sc2.nextLine().toUpperCase();
line1 = line1.trim();
line2 = line2.trim();
for(int i = 0; i < line; i++)
{
if(line1.charAt(i) != line2.charAt(i))
{
work = "no";
t1 = Character.toString(line1.charAt(i));
t2 = Character.toString(line2.charAt(i));
}
else
{
work = "";
t1 = Character.toString(line1.charAt(i));
t2 = Character.toString(line2.charAt(i));
}
}
if(work == "")
{
System.out.println("Line # " + line + ": Matching " + line + " character/s true " + "**" + line1 + "**" + " and " + "**" + line1 + "**");
}
else
{
System.out.println("Line # " + line + ": Matching " + line + " character/s false " + "**" + line1 + "**" + " and " + "**" + line2 + "**");
}
line += 1;
}
}
【问题讨论】:
-
不要
if(line1.charAt(i) != line2.charAt(i)),使用if(line1.charAt(i).equals(line2.charAt(i))) -
use equals() to compare。 @Sekula1991 它是原始类型。所以==很好 -
你要检查charAt()的结果是否为null,然后进行相应的处理
标签: java file char indexoutofboundsexception