您的位置:首页 > 编程语言 > Java开发

Java实现统计福彩双色球出现次数(毫无技术可言)

2013-04-08 13:20 597 查看
今天早上闲来无事,恰好在看微博的时候看到的双色球的开奖视频,没出现一个号,主持人就会报出现了多少次,于是自己就无聊的写了一下统计每期的号码出现的次数程序。

彩票号码数据来自网上:



代码如下Money.java:

package com.heynine.money;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Money {

private List<Map<String, String>> mOldDatas;

/**
* 初始化数据
* @throws Exception
*/
private void initData() throws Exception {
mOldDatas = new ArrayList<Map<String, String>>();
File dataFile = new File("datas.txt");
BufferedReader reader = new BufferedReader(new FileReader(dataFile));
String line = null;
while((line = reader.readLine()) != null) {
Map<String, String> map = new HashMap<String, String>();
//得到时间
String date = line.substring(0, 10);
map.put("date", date);
//取得第几期
String number = line.substring(11, 18);
map.put("number", number);
//红色号码
String red = line.substring(20, 37);
map.put("red", red);
//蓝色号码
String blue = line.substring(38, 40);
map.put("blue", blue);
mOldDatas.add(map);
}
reader.close();
}

/**
* 统计数据
*/
private void count() {
for (int i = 0; i < mOldDatas.size(); i++) {
Map<String, String> mapNow = mOldDatas.get(i);
String[] redNow = mapNow.get("red").split(" ");
String blueNow = mapNow.get("blue");
//蓝色出现的次数包括现在的次数,所以初始化为1
int countBlue = 1;
int[] countRed = new int[redNow.length];
//			//初始化红色号码统计次数为1
for (int n = 0; n < countRed.length; n++) {
countRed
= 1;
}

//统计红色号码次数
String strCountRed = "";
for (int m = 0; m < redNow.length; m++) {
for (int j = i + 1; j < mOldDatas.size(); j++) {
Map<String, String> mapOld = mOldDatas.get(j);
String redOld = mapOld.get("red");
if (redOld.contains(redNow[m])) {
countRed[m]++;
}
}
// 对齐处理
if (m == redNow.length - 1) {
if (countRed[m] < 10) {
strCountRed = strCountRed + countRed[m] + " ";
} else {
strCountRed = strCountRed + countRed[m];
}
} else {
if (countRed[m] < 10) {
strCountRed = strCountRed + countRed[m] + "  ";
} else {
strCountRed = strCountRed + countRed[m] + " ";
}
}

}
// 保存
mapNow.put("countred", strCountRed);

//统计蓝色号码次数
for (int j = i + 1; j < mOldDatas.size(); j++) {
Map<String, String> mapOld = mOldDatas.get(j);
String blueOld = mapOld.get("blue");
if (blueNow.equals(blueOld)) {
countBlue++;
}
}
mapNow.put("countblue", countBlue + "");
}
}

/**
* 数据数据
* @throws Exception
*/
private void output() throws Exception {
System.out.println("开始统计");
FileOutputStream out = new FileOutputStream(new File("out.txt"));
PrintStream p=new PrintStream(out);
for (int i =0; i < mOldDatas.size(); i++) {
Map<String, String> map = mOldDatas.get(i);
System.out.println("正在统计第 " + map.get("number") + "期 ...");
p.println(map.get("date") + "   " + map.get("number") + "期");
p.println("号码:" + map.get("red") + "  " + map.get("blue"));
p.println("次数:" + map.get("countred") + "  " + map.get("countblue"));
p.println();
}
p.close();
out.close();
System.out.println("统计完成!");
}

public static void main(String[] args) {
Money money = new Money();
try {
money.initData();
money.count();
money.output();
} catch (Exception e) {
e.printStackTrace();
}
}
}


运行结果:



输出到文本结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐