这个能用算法实现吗?
我现在有一批数据。格式如下:
String[] a={
1996 21 1,
1996 21 2,
1996 21 3,
1996 22 1,
1996 22 2,
2000 21 2,
2000 23 2}
我想显示出来的格式是:
1996 V21 NO.1 2 3
V22 No.1 2
2000 V21 No.2
V23 No.2
问题点数:20、回复次数:8Top
1 楼malligator(十步之内没有我的爱人)回复于 2006-12-01 12:43:25 得分 0
几重循环就可以实现了吧
想写的,要用到三重循环
写到一小半,判断太复杂了,放弃!Top
2 楼danielzhan()回复于 2006-12-01 12:58:34 得分 0
try Hashtable<String, Hashtable<String, Integer>>Top
3 楼luyang1016(闭月羞花猫)回复于 2006-12-01 12:59:16 得分 0
几重循环就可以实现了吧
想写的,要用到三重循环
写到一小半,判断太复杂了,放弃!
Top
4 楼malligator(十步之内没有我的爱人)回复于 2006-12-01 13:50:11 得分 0
很好笑吗?
====================
public class Test{
public static void main(String args[]){
String[] a={"1996 21 1",
"1996 21 2",
"1996 21 3",
"1996 22 1",
"1996 22 2",
"2000 21 2",
"2000 21 3",
"2000 21 4",
"2000 23 3",
"2000 23 2"};
String ss,sv;
int i=0;
ss=a[0].substring(0,4);
sv=a[0].substring(5,7);
System.out.print(ss+" V"+sv+" NO."+a[0].substring(8,9));
i=1;
do{
while(i<a.length&&ss.equals(a[i].substring(0,4)))
{
while(i<a.length&&sv.equals(a[i].substring(5,7)))
{
System.out.print(" "+a[i].substring(8,9));
i++;
}
System.out.println();
if(i<a.length) {
sv=a[i].substring(5,7);
if(ss.equals(a[i].substring(0,4)))
System.out.print(" V"+sv+" NO."+a[i].substring(8,9));
else {
ss=a[i].substring(0,4);
System.out.print(ss+" V"+sv+" NO."+a[i].substring(8,9));
}
}
i++;
};
}while(i<a.length);
}
}
=============
测试可能不完全,这个应该可以符合要求吧
另:这里假定串中的位数、位置是固定的,如果不是,就要用string.split("\s+")取得各段字符了;判断还是一样的Top
5 楼sxnucseven(*)回复于 2006-12-01 14:15:12 得分 0
写一个类似关系表的数据结构。
写一个字符串处理程序处理这些字符串把结果存入数据结构中。
从数据结构中读取数据打印。
就像自己写一个简单的数据库操作程序一样。只不过这里的数据是存在内存中的。Top
6 楼fool_leave(请及时结贴)回复于 2006-12-04 11:23:05 得分 0
同意sxnucseven的说法,使用Map->Map->ArrayList的结构,或者自己写一个结构来做
要通过设计数据结构来简化程序逻辑Top
7 楼hdhmail2000(禅剑飞雪)回复于 2006-12-04 16:31:07 得分 0
把每一条数据分割成三段,分别保存到临时表的三个字段,然后通过数据库的group by来做
这样效率很高Top
8 楼redhat456(小红帽)回复于 2006-12-07 13:32:11 得分 0
多关键字排序
然后顺序输出就可以了吧!Top




