本文介绍了Java的:如何获得扫描仪的第一次出现只匹配并跳过,如果它之前已经被匹配的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我具有由通过存储在一个ArrayList空格分隔的标记字符串列表。我需要扫描如果串1的令牌是字符串2 present我设法用扫描仪扫描的标记。然而,扫描仪没有做什么,我想要的。

我需要建议/意见
结果
1.将帖子例子:有一NN令牌串1,但是有两大NN令牌字符串
2.因此,扫描程序应扫描字符串2 NN令牌。随着code我放弃,扫描仪将搜索所有NN令牌,包括第二NN令牌。它应该停止在第一NN令牌,而不是继续扫描所有NN令牌。 {Haley的破发建议并停止扫描仪】
结果
2.将帖子现在,另一个问题是 - 如果串1有两个NN令牌,扫描仪应该是足够聪明跳过所有在previous扫描中发现的标记。扫描仪应该能够在字符串1第二NN令牌匹配到第二NN令牌字符串2。
结果

这是我迄今为止..

 进口的java.util.ArrayList;
进口java.util.Scanner中;公共类TokenMatching {    公共静态无效的主要(字串[] args)
    {
        ArrayList的<串GT; taggedArray =新的ArrayList<串GT;();        //例字符串会是什么样子
        字符串字符串1 =WRB VBD NN VB在CC RB VBP NNP
        字符串字符串2 =WRB NN MD PRP VB DT NN在NNS POS JJ NNS        taggedArray.add(字符串1);
        taggedArray.add(字符串2);        //嵌套循环匹配taggedArray(i)与taggedArray(J)
        的for(int i = 0; I< taggedArray.size();我++)
        {
            对于(INT J = I + 1; J< taggedArray.size(); J ++)
            {
                扫描仪SCAN1 =新的扫描仪(taggedArray.get(I));                INT索引1 = 0;
                而(scan1.hasNext())
                {
                    串TOKEN1;
                    TOKEN1 = scan1.next();
                    的System.out.println(TOKEN1);
                    扫描仪SCAN2 =新的扫描仪(taggedArray.get(J));                    INT索引2 = 0;
                    而(scan2.hasNext())
                    {
                        串token2 = scan2.next();                        如果(token1.equals(token2))
                        {
                            INT relPosition;
                            relPosition = Math.abs(索引1,索引2);                            //打印线帮我记录什么是在循环回事
                            的System.out.println(匹配找到。);
                            的System.out.println(+ TOKEN1 +的相对位置:+ relPosition);                        }
                            其他
                            {
                                的System.out.println(没有发现匹配。);
                            }                        索引2 ++;
                    }                    索引1 ++;
                }
            }
        }
    }
}

任何意见将是一个很大的帮助。谢谢你。


解决方案

In your if(token1.equals(token2)) add a break; after System.out.println("Relative position for " + token1 + " : " + relPosition);. Is the output generated by http://ideone.com/2o5Yz what you want?

这篇关于Java的:如何获得扫描仪的第一次出现只匹配并跳过,如果它之前已经被匹配的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-29 00:22