文档章节

java随机生成号码增强版

不最醉不龟归
 不最醉不龟归
发布于 2017/08/31 18:43
字数 717
阅读 31
收藏 2

本文永久地址:https://my.oschina.net/bysu/blog/1527148

前阵子写了一篇博客,主要就是随机生成手机号码。随着工作上的使用,对之前的生成进行优化与改进,于是便有了下文。

先把效果贴出来吧~

获取本地记录文件行数相关类

GetSourceFileLineNo.java

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class GetSourceFileLineNo{

    public static void main(String[] args) {
		getLimitRecord("./result.txt");
    }
	
	public static void getLimitRecord(String filePath){
		BufferedReader br = null;
		String tempStr = "";
		int count = 0;
		int allLineOfFile = getSourceFileLineNo(filePath);
		try{
			br = new BufferedReader(new FileReader(new File(filePath)));
			while((tempStr=br.readLine())!=null){
				if((allLineOfFile - count++)<=10){
					System.out.println(tempStr);
				}
			}
		}catch(IOException e){
			System.out.println("没有该文件或目录");
			e.printStackTrace();
		}finally{
			try{
				br.close();
			}catch(IOException e){
				System.out.println("关闭以前关闭的流无效~!");
				e.printStackTrace();
			}
		}
	}
	
	//Gets all lines of file
	public static int getSourceFileLineNo(String filePath){
		BufferedReader br = null ;
		String tempStr = "";
			int count = 0;
		try{
			br = new BufferedReader(new FileReader(new File(filePath)));
			while((tempStr=br.readLine())!=null){
				count ++;
			}
		}catch(IOException fnf){
			System.out.println("没有该文件或目录");
			fnf.printStackTrace();
			
		}finally{
			try{
				br.close();
			}catch(IOException e){
				System.out.println("关闭以前关闭的流无效~!");
				e.printStackTrace();
			}
		}
		return count;
	}
}

 

结果写入本地类

WriteResultToTxt.java

import java.io.IOException;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.File;
import java.util.Date;
import java.text.SimpleDateFormat;

public class WriteResultToTxt{
	public static void writeResult(String textContent){
		String resultText = textContent;
		try{
			BufferedWriter bw = new BufferedWriter(new FileWriter(new File(".\\result.txt"),true));
			bw.write(resultText,0,resultText.length());
			bw.newLine();
			bw.close();
			
		}catch(IOException e){
			
		}
		
	}
	
	public static String getSystemTime(){
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:MM:SS");//设置日期格式
		String systemTime = df.format(new Date());// new Date()为获取当前系统时间
		return systemTime;
	}
}

随机生成手机号类

MobileRandomNum.java

import java.util.ArrayList;
import java.util.Random;

public class MobileRandomNum {
	static String channelName = "";
    	
	//随机生成手机号码前3位
    public static int startMobileNo(){
        int[] mobileStart = {139,138,137,136,135,134,159,158,157,150,151,152,188,130,131,132,156,155,133,153,189,180,177,176};
        Random r = new Random();
        ArrayList<Integer> mobileList = new ArrayList<>();
        for(int i = 0;i<mobileStart.length;i++){
            mobileList.add(mobileStart[i]);
        }
        return mobileList.get(r.nextInt(mobileList.size()));
    }
    
	//随机生成手机号码后8位
    public static String endMobileNo(){
        Random r = new Random();
        String temp = "";
        for(int i=0;i<8;i++){
			if(i==4){
				temp += "-";
			}
            temp += r.nextInt(10);
        }
        return temp;
    }
	
}

选择渠道类

ChooseChannel.java

import java.util.regex.Pattern;
import java.util.regex.Matcher;
import java.util.Scanner;

public class ChooseChannel{
	public static String channelName(){
		//System.out.println("请输入渠道:1.蚂蚁开户;2.常规开户;3.保单开户;4.融资融券预开户...");
		Scanner scan = new Scanner(System.in);
		String is_result = String.valueOf(scan.nextInt());
		switch(is_result){
			case "1":
			is_result = "蚂蚁开户";
			break;
			case "2":
			is_result = "常规开户";
			break;
			case "3":
			is_result = "保单开户";
			break;
			case "4":
			is_result = "融资融券预开户";
			break;
			default:
			is_result = "其他";
			System.out.println("是否需要备注:\"Y\" or \"N\"?");
			Scanner scanOther = new Scanner(System.in);
			String temp_result = scanOther.nextLine();
			if(temp_result.equalsIgnoreCase("Y")){
				System.out.println("请输入备注,并回车");
				is_result = scanOther.nextLine();
			}
		}
		return is_result;
	}
	
	//在console输出选项内容,如果选的是5,且需要备注,那么就不再次输出
	public static String consolePrint(String channelName){
		String result = channelName;
		Pattern p = Pattern.compile(".+开户");
		Matcher m = p.matcher(result);
		
		if(m.matches() || result.equals("其他")){
			return result;
		}else return "";
	}
}

 

最后的批处理文件.bat

@echo off
echo "最近的历史记录~:"
javac -encoding utf8 .\GetSourceFileLineNo.java
for /f "delims=" %%i in ('java GetSourceFileLineNo') do (
    echo %%i
)

:1
echo "请输入渠道:1.蚂蚁开户;2.常规开户;3.保单开户;4.融资融券预开户;5.其他..."
javac -encoding utf8 .\TestGeneratorNumber.java
java TestGeneratorNumber

pause
goto 1

 

注意:文件都放在同一个文件夹,然后运行批处理就可以了。

 

 

© 著作权归作者所有

共有 人打赏支持
不最醉不龟归
粉丝 15
博文 423
码字总数 445380
作品 0
深圳
程序员
加载中

评论(2)

不最醉不龟归
不最醉不龟归

引用来自“断崖逐梦”的评论

变态的需求��������
自己用而已:grin:
断崖逐梦
断崖逐梦
变态的需求��������
Java深度理解——Java字节代码的操纵

导读:Java作为业界应用最为广泛的语言之一,深得众多软件厂商和开发者的推崇,更是被包括Oracle在内的众多JCP成员积极地推动发展。但是对于 Java语言的深度理解和运用,毕竟是很少会有人涉及...

刘学炜
2012/01/13
0
0
Sharding-JDBC — 读写分离(spring boot)

我们的项目,很多都涉及到了数据库的操作。数据库的稳定性显得尤为重要。互联网公司很多都采用“一主多从”的实现方案,我这里也不例外。这样可以大大减少主库的读压力,从而提高数据库性能!...

小王穷遊
05/25
0
0
深度探讨Java字节代码的操纵方法

本文为IBM工程师成富编写的《Java深度历险》的第一部分Java字节代码的操纵,像这样Java语言的深度理解和运用还没有很多文章,我们把他奉献给读者,希望读者们喜欢。 51CTO编者按:我们曾给大...

mj4738
2011/11/02
0
0
从java1到java9每个版本都有什么新特性?五分钟了解

     其实,我是个标题党,没有java1的说法,java9的新特性我也没总结。所以,来个关注吧,说不定哪天就出了呢。。。   每次出新版本,大家大概都会这么问,“Java X会有什么特性呢?”...

java进阶架构师
2017/11/13
0
0
咕泡-代理 proxy 设计模式笔记

##查看代码:https://gitee.com/jly521/proxy.git 代理模式(Proxy) 应用场景:为其他对象提供一种代理以控制对这个对象的访问 从结构上来看和Decorator 模式类似, 但Proxy 是控制,更像是...

职业搬砖20年
08/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

sourcetree 离线免注册登录安装教程

Sourcetree是一个优秀的git可视化管理工具,深受开发者喜爱Sourcetree官网,但是在安装时需要谷歌账户登录,需要翻qiang才可以,此一点一直被人们所诟病。今天本教程就为大家提供离线免登陆安...

QQZZFT
15分钟前
1
0
使用 PostgreSQL 解决一个实际的统计分析问题

使用 PostgreSQL 解决一个实际的统计分析问题作者:老农民(刘启华)Email: 46715422@qq.com 之前有个朋友扔给我一个奇葩需求,他们公司之前做了一批问卷调查,全部都是统一格式的excel...

新疆老农民
18分钟前
1
0
TypeScript基础入门之高级类型的映射类型

转发 TypeScript基础入门之高级类型的映射类型 高级类型 映射类型 一个常见的任务是将一个已知的类型每个属性都变为可选的: interface PersonPartial {    name?: string;    age?...

durban
33分钟前
1
0
Dubbo源码分析(6):Dubbo内核实现之基于SPI思想Dubbo内核实现

SPI接口定义 定义了@SPI注解 package com.alibaba.dubbo.common.extension; import java.lang.annotation.Documented;import java.lang.annotation.ElementType;import java.lang.an......

郑加威
34分钟前
1
0
RxJS的另外四种实现方式(后记)—— 同时实现管道和链式编程

目录 RxJS的另外四种实现方式(序) RxJS的另外四种实现方式(一)——代码最小的库 RxJS的另外四种实现方式(二)——代码最小的库(续) RxJS的另外四种实现方式(三)——性能最高的库 Rx...

一个灰
37分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部