java将数组元素与下一个数组进行比较,并在该元素为新元素时重新开始
所以我有类似的数据
a a a a b b c d d d
我想建立一个程序,程序可以计算我的文档中每个字符串的数量。根据上面的数据,我希望结果是a=4b=2c=1d=3。数据已经被排序,所以我想首先我必须做一个循环,在这里我比较第一个数据和第二个数据。如果匹配,则count变量将递增。如果没有,它将假定这是一个新数据,因此计数重置为0。问题是我没有得到我想要的结果。这是我目前的代码
String[] nextLine;
int count=0;
nextLine = reader.readNext();
String current= nextLine[0];
while(reader.readNext()!=null){
nextLine = reader.readNext();
if(current.matches(nextLine[0])){
count++;
}else{
System.out.println("data = "+current+" total = "+count);
count=0;
current = nextLine[0];
}
}
reader是我创建用来读取文档的对象。 如果你没有真正理解我的意思,我很抱歉。我在措辞上有困难(英语不是我的第一语言),如果你不懂什么,就发表评论。提前谢谢
如果你问我得到了什么样的结果,这就是我得到的
data = 2013-07-01 total = 2199
data = 2013-07-02 total = 0
data = 2013-07-01 total = 1
data = 2013-07-02 total = 0
data = 2013-07-01 total = 0
data = 2013-07-02 total = 0
data = 2013-07-01 total = 0
data = 2013-07-02 total = 0
........
data = 2013-08-09 total = 0
data = 2013-08-12 total = 1
data = 2013-08-11 total = 0
data = 2013-08-12 total = 7
data = 2013-08-11 total = 0
data = 2013-08-12 total = 0
data = 2013-08-11 total = 0
data = 2013-08-10 total = 0
data = 2013-08-11 total = 0
data = 2013-08-12 total = 0
data = 2013-08-11 total = 1
data = 2013-08-12 total = 1
data = 2013-08-11 total = 1
data = 2013-08-12 total = 0
data = 2013-08-10 total = 0
data = 2013-08-12 total = 0
是的,这是一个日期,但我以字符串数据类型保存了它,所以我认为这不应该是个问题。对于任何试图回答我问题的人,非常感谢,但我得到的结果与我使用上述代码得到的结果没有太大区别。所以我还是不知道怎么了
# 1 楼答案
在我看来,你的策略和算法是正确的——但你需要数一数第一个——你要去的地方count=0你已经看完了一个,所以你需要改为count=1
您还有一些其他问题: while中的readline会丢弃它的结果,因此您只需每隔一行读取一次。 前端的读线可能会导致损耗,而不是将电流设置为无效(0?)然后从那里进入循环
使用HasSET的另一个(也许更好的)解决方案,你可以考虑。
# 2 楼答案
试试这个:
}
# 3 楼答案
我会使用一个映射,用字符串作为键,用整数作为值来填充它。因此,您可以询问地图是否已经包含下一个键,如果是,则计算值,如果没有,则输入一个新键,并将值设置为1
诸如此类:
# 4 楼答案
如果数据按如下方式排列在文本文件中,则此答案有效:
我的答案使用了Scanner class,希望你能发现它很有用。我刚把扫描仪硬编码为从一个名为stack的文件中读取。txt。这是用于我自己的测试,所以一定要更换堆栈。带有文件名的txt