我是才学了几个星期的菜鸟,也觉得很有兴趣学.经常看视频.跟着看的时候觉得思路挺清晰的.但把视频关了.自己写的时候完全就傻了.我昨天也提过问。还是关于这个的。有很多好心也帮我写了。但是我拿到程序就蒙了,好多东西我都没学过。也不知道怎么查。我希望能得到程序的同时也能了解下思路。不是我没探索精神,主要这个东西要得急,也不够时间我自己去摸索.所以我才来求助的.
当看到这个需求我再次傻了.不知道该怎么去分析.脑袋里面就只知道拿流套到文件上.然后往外一行行写的时候来分析是A,B,C 和日期..
还是不知道怎么在一段代码里面去实现下面的这些功能.
我自己觉得我还是多用心的在学.就是老是思路不明确..悲哀啊...今天周末,如果你有时间的话指导一下小弟吧.真的很想弄明白.不然老觉得心里堵得慌.
在此我先谢谢了..我的QQ : 13611377文件:*.txt ,
大小: 26M ,
里面的内容全是这样的数据(我就不全部发出来了,都是用户的信息):923636|13000000000|-cxby1|2008-09-27 10:00:00|B
923636|13000000000|-cxby1|2008-11-05 15:47:37|A
923636|13000000000|-cxby1|2008-11-05 16:46:43|A
923636|13000000000|-cxby1|2008-09-11 11:30:00|C
923636|13000000000|-cxby1|2008-11-05 16:10:34|A
923636|13000000000|-cxby1|2008-11-05 16:31:24|A
923636|13000000000|-cxby1|2008-09-27 10:00:00|B
923636|13000000000|-cxby1|2008-11-05 15:55:56|A
923636|13000000000|-cxby1|2008-11-05 16:18:36|B
923636|13000000000|-cxby1|2008-09-27 10:00:00|A
923636|13000000000|-cxby1|2008-09-27 10:00:00|B
923636|13000000000|-cxby1|2008-09-27 10:00:00|A
923636|13000000000|-cxby1|2008-09-27 10:00:00|A A.数据统计:
1.统计A类型的用户数量,信息
2.统计B类型的用户数量,信息
3.统计C类型的用户数量,信息
B.类型输出到文件
1.输出所有A类型的用户到指定文件
2.输出所有B类型的用户到指定文件
3.输出所有C类型的用户到指定文件
4.输出指定ServiceID(就是-cxby1所在列)的用户到指定文件
4.输出指定年月日的用户信息到指定文件
(比如我想把这里面日期在2008-11-05这天的信息全部导到另外一个TXT文件里面去)
C.查询用户
1.查询号码,打印用户信息
当看到这个需求我再次傻了.不知道该怎么去分析.脑袋里面就只知道拿流套到文件上.然后往外一行行写的时候来分析是A,B,C 和日期..
还是不知道怎么在一段代码里面去实现下面的这些功能.
我自己觉得我还是多用心的在学.就是老是思路不明确..悲哀啊...今天周末,如果你有时间的话指导一下小弟吧.真的很想弄明白.不然老觉得心里堵得慌.
在此我先谢谢了..我的QQ : 13611377文件:*.txt ,
大小: 26M ,
里面的内容全是这样的数据(我就不全部发出来了,都是用户的信息):923636|13000000000|-cxby1|2008-09-27 10:00:00|B
923636|13000000000|-cxby1|2008-11-05 15:47:37|A
923636|13000000000|-cxby1|2008-11-05 16:46:43|A
923636|13000000000|-cxby1|2008-09-11 11:30:00|C
923636|13000000000|-cxby1|2008-11-05 16:10:34|A
923636|13000000000|-cxby1|2008-11-05 16:31:24|A
923636|13000000000|-cxby1|2008-09-27 10:00:00|B
923636|13000000000|-cxby1|2008-11-05 15:55:56|A
923636|13000000000|-cxby1|2008-11-05 16:18:36|B
923636|13000000000|-cxby1|2008-09-27 10:00:00|A
923636|13000000000|-cxby1|2008-09-27 10:00:00|B
923636|13000000000|-cxby1|2008-09-27 10:00:00|A
923636|13000000000|-cxby1|2008-09-27 10:00:00|A A.数据统计:
1.统计A类型的用户数量,信息
2.统计B类型的用户数量,信息
3.统计C类型的用户数量,信息
B.类型输出到文件
1.输出所有A类型的用户到指定文件
2.输出所有B类型的用户到指定文件
3.输出所有C类型的用户到指定文件
4.输出指定ServiceID(就是-cxby1所在列)的用户到指定文件
4.输出指定年月日的用户信息到指定文件
(比如我想把这里面日期在2008-11-05这天的信息全部导到另外一个TXT文件里面去)
C.查询用户
1.查询号码,打印用户信息
VB是支持txt文件作为数据源,但不知Java支持不.
要是不支持那就只有自己写个类来处理,只是效率会差点
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;public class Gl1010_Test { /**
* <p>功能描述:把文件转化成List<Uesr></p>
* @param file
* @return
* @throws Exception
* @author:jack
* @update:[日期YYYY-MM-DD] [更改人姓名][变更描述]
*/
private List<User> getUsersFromFile(File file) throws Exception {
List<User> users = new ArrayList<User>();
BufferedReader reader = new BufferedReader(new FileReader(file));
String oneLine = "";//每一行的数据
while((oneLine=reader.readLine()) != null) {//循环读取每一行
String[] split = oneLine.split("\\|");//用"|"分割字符串
User user = new User();//创建一个新的用户
user.setNumber(split[0].trim().length()==0?0:Integer.parseInt(split[0].trim()));//设置用户的Number值
user.setPhone(split[1].trim());//设置用户的手机号码
user.setType(split[2].trim());//设置用户的类型
String dateStr = split[3].trim();//
if(dateStr.length()>0) {
Date createDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(dateStr);
user.setCreateDate(createDate);//设置用户的创建日期
}
user.setName(split[4].trim());//设置用户的名称
users.add(user);//把用户加入到一个List中,返回用
}
return users;
}
/**
* <p>功能描述:通过用户名输出文件</p>
* @param userName
* @author:jack
* @update:[日期YYYY-MM-DD] [更改人姓名][变更描述]
*/
public void outFileByUserName(List<User> users, String userName, String filepath) throws Exception {
if(users != null) {
this.orderUsers(users);
StringBuilder sb = new StringBuilder();
for(User user : users) {
if(user.getName().equals(userName))//等于输入的名字的用户
sb.append(user.getNumber()).append("|")
.append(user.getPhone()).append("|")
.append(user.getType()).append("|")
.append(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user.getCreateDate())).append("|")
.append(user.getName()).append("\r\n");
}
if(sb.length() > 0) {
FileWriter writer = new FileWriter(new File(filepath));
writer.write(sb.toString());
writer.flush();
}
}
}
/**
* <p>功能描述:通过时间进行排序</p>
* @param users
* @author:jack
* @update:[日期YYYY-MM-DD] [更改人姓名][变更描述]
*/
private void orderUsers(List<User> users) {
if(users != null) {
Collections.sort(users, new Comparator() {
public int compare(Object o1, Object o2) {
User user1 = (User) o1;
User user2 = (User) o2;
return user1.getCreateDate().compareTo(user2.getCreateDate());
}
});
}
}
/**
* <p>功能描述:测试主方法</p>
* @param args
* @author:jack
* @update:[日期YYYY-MM-DD] [更改人姓名][变更描述]
*/ public static void main(String[] args) {
System.out.println("程序开始--->"+System.currentTimeMillis());
Gl1010_Test test = new Gl1010_Test();
try {
List<User> users = test.getUsersFromFile(new File("d:/users.txt"));
test.outFileByUserName(users,"A","d:/A.txt");
test.outFileByUserName(users,"B","d:/B.txt");
test.outFileByUserName(users,"C","d:/C.txt");
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("程序结束--->"+System.currentTimeMillis());
}
class User {
private String name = "";//保存A,B,C用户名称
private int number = 0;//保存923636,不知道干什么的,所以起的名字不好
private String phone = "";//保存13000000000,用户的手机号码
private String type = "";//保存-cxby1,用户类型,这里是程序编译类型
private Date createDate = null;//保存2008-09-27 10:00:00,用户创建日期
/*****************************************************************
* 下面是上面属性的Getter和Setter方法
******************************************************************/
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public Date getCreateDate() {
return createDate;
}
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
}}
h[i][1] h[i][2]h[i][3] h[i][4] h[i][5] 分别储存923636|号码|-cxby1|日期|类型5部分问题A:
然后数h[i][5]="B"有多少个
for(i=0;...;i++){
if(h[i][5]=="B"){s++;}
}问题B:
在输出的时候检查每行的h[i][5]等于"B"再输出
这里的d:/users.txt改成你的那个文件的路径才可以
test.outFileByUserName(users,"B","d:/B.txt");
test.outFileByUserName(users,"C","d:/C.txt");
都在D盘的根目录下