HY,
我有以下代码:
package regexsimple5;
import java.util.Scanner;
import java.util.ArrayList;
import java.util.regex.*;
import java.io.*;
import java.util.regex.Pattern;
public class RegexSimple5 {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
ArrayList <String> foundName = new ArrayList<String>();
ArrayList <String> noDuplicatesName = new ArrayList<String>();
try{
Scanner myfis = new Scanner(new File("D:\\myfis5.txt"));
while(myfis.hasNext())
{
String delim = " ";
String line = myfis.nextLine();
String [] words = line.split(delim);
for( String s: words)
{
if(!s.isEmpty()&&s!=null)
{
Pattern search = Pattern.compile("[A-Z][a-z]*");
Matcher match = search.matcher(s);
if(match.find())
{
foundName.add(s);
}
}
}
}
if(!foundName.isEmpty())
{
for(String s: foundName)
{
System.out.println(s);
int n = foundName.size();
System.out.println(foundName.get(0));
}
int n = foundName.size();
for(int i=0; i<n; i++)
{
if(foundName.get(i).equals(foundName.get(i+1)))
{
noDuplicatesName.add(foundName.get(i));
}
}
System.out.println(n);
}
if(!noDuplicatesName.isEmpty())
{
for(String s: noDuplicatesName)
{
System.out.print("***********");
System.out.print(s);
}
}
}
catch (Exception ex)
{
System.out.println(ex);
}
}
}
我希望借此显示名字和姓氏相同的人。
但是我得到了错误:
java.lang.IndexOutOfBoundsException:
而不显示重复名称和姓氏的arraylist。
真诚的
最佳答案
问题线很可能是这样的:
if(foundName.get(i).equals(foundName.get(i+1)))
当位于列表末尾时,在访问第
OutOfBoundsException
个元素时将导致(i+1)
。难以理解整个代码,但是您可以通过运行循环直到
n-1
来解决它,即:for(int i=0; i<n-1; i++)
关于java - 尝试检测具有相同名字和姓氏的人时,我的ArrayList有什么问题。我正在使用正则表达式模式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23720546/