100分求一算法思路,做过大字符串处理的高手请进~~ int i=0;.............if (c.equals("#")){ i++; if (i==4) stopIt(); }else i=0; 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 to zhblue(歪嘴鱼):我晕,随个随个字符来读呀??要是不是四个#,而是#*(),那你的循环岂不更复杂了?? to gongcaihua(cgrs):所以才要一边读一边写呀 可能要用一个数组来缓存用endsWith("#")endsWith("##")endsWith("###")endsWith("####")来判断是否以这些东西结尾,然后再与下一次读取的数组的startsWith("#")startsWith("##")startsWith("###")startsWith("####")来判断是否是连续的<####> to all:能不能说得详细一点呀??最好有源码参考 做2个 String第一次读的 1024 存到第一个 String然后读第二次 1024 存到 第二个 String然后 str1+str2.indexOf("####");有 #### 停止没有 #### 存储str1 >>> str1 = str2 >>> 提取新的 str2again & again 因为是从一socket的inputstream中连续读取一个很大的字符串,所以可以考虑先把所有的一起读完,保存到一个临时文件,然后对这个临时文件进行处理。这样比一面读socket一面处理的效果要好一点。 说的意思就是啊java.io.Serializable 其实,应该用PushBackReader,效率最高。 to onefox(一品狐):做两个string会读过头了,下一状态处理的时候由于读不到该读的数据会出错的,所以必须保证一读到####时马上转换状态to jkit(郁闷的程序员):不太可能,因为你不知道什么时候读完了socket流是一直传输的,存成文件没有结束符,缺点同上to gongcaihua(cgrs)、dinosaur_cl() 具体怎么用啊?? 用多线程,一个专门接收数据,一个专门处理数据。处理数据:每遇到“####”就把之前的数据全部处理并clear掉。接收数据:每次读到的一定量的数据和前面剩余的拼到一起。这样基本上能做到实时处理,并且不会有“####”被分断的问题。 String里有查找字符的方法,查找第一个'#';如果发现就连取四个字符;要设置一个计数器,这样在"####"出现在两个字符串时,保证在第一个字符串尾与第二个字符串头所取得字符一共是四个;看是否等于你的校验字符串"####"。 使用PushBackReader,每次读1024个字节,然后用indexof("####")来判断是否结束。如果没有找到,再用PushBackReader的unread(4)函数将已经读取得四个字节在压回去。然后再读1024个字节,这样就不后出现你所的那种情况啦。 to fengwb(fengwb):这样好像可行性稍高 to fengwb(fengwb):看还有没有更好的办法明天就结贴了分一定少不了你的 请教泛型问题 Thread CPU 使用率问题 请教一个问题 关于GUI设计窗体上中文的显示问题? 关于方法 请问一个控件的使用? 一个关于static的非常奇怪的问题 applet很奇怪的问题。。。。 用JAVA做什么??? 与项目经理思路冲突,项目经理说一定要按他的方法实现,真不能理解,请大家帮帮忙 有一个JTextField控件,限制输入格式为"2003/06",前四位是年份,中间是"/",后两位是月份!急,谢谢!!! 内部类的构造函数问题??请高人指点以下代码。
所以才要一边读一边写呀
可能要用一个数组来缓存
用endsWith("#")endsWith("##")endsWith("###")endsWith("####")来判断是否以这些东西结尾,然后再与下一次读取的数组的startsWith("#")startsWith("##")startsWith("###")startsWith("####")来判断是否是连续的<####>
最好有源码参考
第一次读的 1024 存到第一个 String
然后读第二次 1024 存到 第二个 String
然后 str1+str2.indexOf("####");
有 #### 停止
没有 #### 存储str1 >>> str1 = str2 >>> 提取新的 str2
again & again
做两个string会读过头了,下一状态处理的时候由于读不到该读的数据会出错的,
所以必须保证一读到####时马上转换状态to jkit(郁闷的程序员):
不太可能,因为你不知道什么时候读完了
socket流是一直传输的,存成文件没有结束符,缺点同上to gongcaihua(cgrs)、dinosaur_cl()
具体怎么用啊??
处理数据:每遇到“####”就把之前的数据全部处理并clear掉。
接收数据:每次读到的一定量的数据和前面剩余的拼到一起。
这样基本上能做到实时处理,并且不会有“####”被分断的问题。
如果发现就连取四个字符;
要设置一个计数器,这样在"####"出现在两个字符串时,保证在第一个字符串尾与第二个字符串头所取得字符一共是四个;
看是否等于你的校验字符串"####"。
如果没有找到,再用PushBackReader的unread(4)函数将已经读取得四个字节在压回去。
然后再读1024个字节,这样就不后出现你所的那种情况啦。
这样好像可行性稍高
看还有没有更好的办法
明天就结贴了
分一定少不了你的