1、验证码生成程序:验证码由4个字符组成,4个字符分别为大写字母和数字字符,每个字符不能重复。(选做:验证码图片生成程序)
**************************************************************
package exec1;
import java.util.Random;
public class RandomString
{
public static void main(String[] args)
{
String s = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";//把可以产生的字符放到s字符串中,方便随机抽去其中的字符
String str = "";//定义字符串str,用来接收随机产生的字符。
Random rand1 = new Random();
for(int i = 0 ; i < 4 ; i++)
{/*产生0~36间的随机数,并以这个随机数为索引值找字符串s中相应的字符,
然后在字符串str中搜索,如果有则重新在字符串s中随机生成字符,如果没有,则存进字符串str中*/
char c = s.charAt(rand1.nextInt(36));
if(str.indexOf(c) == -1)
{
str = str + c;//
}
else
{
i--;
}
}
System.out.println(str);
}
}
****************************************************
2、生肖年份对应程序:已知1986年是虎年,任意输入一个年份,计算那个年份的属相;录入一个开始年、一个终止年及一个属相,计算开始年到终止年的范围内有哪些年是那个指定属相的年份。
***********************************************************
package exec2;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
public class YearChangToShengXiao {
public static void main(String[] args) {
char ch[] = new char[128];//定义字符数组用来接受从流中接收从键盘输入的字符
char shuxiang;
char firstshuxiang;
int sum = 0, year = 0, year1 = 0, year2 = 0, year3 = 0, dir = 0, count = 0;
try {
while (true) {
String s = "虎兔龙蛇马羊猴鸡狗猪鼠牛";//定义字符串s存全部生肖
System.out.println("请输入0或1,0表示计算你输入年份的生肖,1表示计算你输入的首尾年份之间指定生肖的年份");
System.out.println("输入'#'则退出");
BufferedReader buffer = new BufferedReader(
new InputStreamReader(System.in));//产生BufferedReader输入流
buffer.read(ch);//将从键盘输入的字符存到数组ch中
if (ch[0] == '#') {
break;//数组ch中第一个字符如果为“#”,则退出while循环
}
else if (ch[0] != '0' && ch[0] != '1') {
System.out.println("输入错误,请重新输入:");//如果ch数组中第一个元素不是0或1,则重新开始循环
}
else if (ch[0] == '0') {//如果ch数组中第一个元素是0,则输入年份到数组ch中,并且计算该年份的属相
System.out.println("请输入年份:");
buffer.read(ch);
year = ((int)ch[0] ) * 1000 + ((int)ch[1]) * 100
+ ((int)ch[2] ) * 10 + ((int)ch[3]);
sum = year - 1986;
if (sum < 0) {
shuxiang = s.charAt(12 - (-sum) % 12);
} else {
shuxiang = s.charAt(sum % 12);
}
System.out.println("你输入的年份的属相是:" + shuxiang);
}
else {
System.out.println("请分别输入开始年,终止年和属相:");
buffer.read(ch);/*如果ch数组中第一个元素是1,则输入起始年份
和终止年份及属相到数组ch中。并且将按照在字符
数组ch中的排序,将起始年 和终止年计算成int型*/
year1 = ((int)ch[0]) * 1000 + ((int)ch[1]) * 100
+ (int)(ch[2] ) * 10 + ((int)ch[3] );
year2 = ((int)ch[4]) * 1000 + ((int)ch[5] ) * 100
+ (int)(ch[6]) * 10 + ((int)ch[7] );
if (year1 > year2) {//如果起始年比终止年大,不符合要求
System.out.println("输入错误,开始年应该比终止年小!请重新输入:");
}
else {
sum = year1 - 1986;
if (sum < 0){ //计算起始年的属相
firstshuxiang = s.charAt(12 - (-sum) % 12);
}
else {
firstshuxiang = s.charAt(sum % 12);
}
dir = s.indexOf((char) ch[8])
- s.indexOf(firstshuxiang);
if (dir > 0) {//计算从起始年开始第一个属于从键盘输入的属相的年份
year3 = year1 + (12 + dir);
}
else {
year3 = year1 + dir;
}
for (int i = 0; year3 < year2; i++) {
System.out.println(year3 + 12 * i);
count++;
if (count % 5 == 0) {
System.out.println("/t");
}
}
}
}
}
} catch (FileNotFoundException e) {
System.out.println("输入错误,程序将退出1");
System.exit(0);
} catch (IOException e) {
System.out.println("输入错误,程序将退出2");
System.exit(0);
} catch (NullPointerException e) {
System.out.println("输入错误,程序将退出3");
System.exit(0);
}
}
}
***************************************************************
3、电话号码幸运抽奖程序:对电话号码进行幸运抽奖活动,抽奖人数录入指定,电话号码由文件读入。
************************************************************
package exec3;
import java.util.Random;
import java.io.*;
public class LuckyNumber
{
public static void main(String[] args) {
Random rand1 = new Random();
String buf = new String();//定义字符串接收产生的幸运号码
String str;//定义字符串接受从键盘输入的字符
String allphoneNumber = new String();//定义字符串接受从文件中读取的电话号码
BufferedReader buffer;
int mark=0,count=0,num=0,k=0,l = 0;
int randomshu;
long m=1;
try
{
while(true)
{
System.out.println("请输入抽奖人数,回车抽出幸运号码!输入‘0’退出");
buffer = new BufferedReader(new InputStreamReader(System.in));//产生字符串输入流
str = buffer.readLine();//将输入的字符存到字符串str中
l = Integer.parseInt(str);//将字符串中的的字符转换为int型
if(l == 0)//如果为0,则退出while循环
break;
RandomAccessFile randomNumber = new RandomAccessFile(".//RandNum.txt","r");
//创建RandomAccessFile输入流
while(m < randomNumber.length())
{//将RandNum.txt中的所有电话号码存到allphoneNumber数组中,并没个电话号码有空格隔开
allphoneNumber = allphoneNumber + randomNumber.readLine() + ' ';
count++;//记录电话号码的个数
m = allphoneNumber.length();
}
System.out.println(allphoneNumber);
for(int i = 0 ; i < l ; i++)//找l个中奖号码
{
randomshu = rand1.nextInt(count);//在0~count中产生随机数
for(int j = 0 ; j < allphoneNumber.length() ; j++ )
{
if(allphoneNumber.charAt(j) == ' ')
{//找随机产生的电话号码
num ++;
k = 1;
}
else if(num == randomshu)
{//找到了就把电话号码存进buf数组中
buf = buf + allphoneNumber.charAt(j);
}
}
System.out.print("/n");
}
System.out.println("幸运号码是:"+buf);
}
}
catch(FileNotFoundException e)
{
System.out.println("e.toString");
System.exit(0);
}
catch(IOException e)
{
System.out.println("输入错误,程序将退出1");
System.exit(0);
}
}
}
**************************************************************
4、文件查询程序:用户在命令行输入查找类型参数、范围参数以及匹配文件名或文件内容参数后,在指定的范围内查找指定的文件,并将结果存储在对应的文件内。在处理异常时,也用相应的文件进行异常信息的存储,以便以后查阅。
******************************************************************
******************************************************************
文件系统:
import java.util.*;
import java.io.*;
class FileList{
private String name ="";
private String size ="";
private String mTime ="";
public FileList(String name,String size,String mTime)
{
this.name = name ;
this.size = size ;
this.mTime = mTime ;
}
public String getName()
{return name;}
public String getSize()
{return size;}
public String getmTime()
{return mTime;}
}
class NameComparator implements Comparator<FileList>{
public int compare(FileList o1,
FileList o2){
if((o1.getName()).compareTo(o2.getName())<0)
return 0;
else
return 1;
}
}
class SizeComparator implements Comparator<FileList>{
public int compare(FileList o1,
FileList o2){
if((o1.getSize()).compareTo(o2.getSize())<0)
return 0;
else
return 1;
}
}
class TimeComparator implements Comparator<FileList>{
public int compare(FileList o1,
FileList o2){
if((o1.getmTime()).compareTo(o2.getmTime())<0)
return 0;
else
return 1;
}
}
class shuxOfFile{
public shuxOfFile(){}
public String[] getFile(File a)
{
String[] str ={a.getName(),Long.toString(a.length()/8), new Date(a.lastModified()).toString()};
return str;
}
}
public class Exec4
{
public static String putin()//输入
{
String str=new String();
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
try
{
str=br.readLine();
}
catch(IOException e)
{
System.out.println("输入错误!");
}
return str;
}
public static void main(String[] args){
System.out.println("请输入文件路径!");
File myF=new File(putin());
File[] myFL=myF.listFiles();
shuxOfFile sF=new shuxOfFile();
ArrayList<FileList> List1 = new ArrayList<FileList>();
for(int i=0;i<myFL.length;i++)
{
String[] str=sF.getFile(myFL[i]);
List1.add(new FileList(str[0],str[1],str[2]));
}
System.out.println("请选择排序方式:Name,Size,Time");
String S=putin();
if(S.equals("Name"))
Collections.sort(List1,new NameComparator());
else if(S.equals("Size"))
Collections.sort(List1,new SizeComparator());
else if(S.equals("Time"))
Collections.sort(List1,new TimeComparator());
for(int i=0;i<List1.size();i++)
System.out.println("File"+(i+1)+":/n/tName:"+(List1.get(i)).getName()+"/n/tSize:"+(List1.get(i)).getSize()+" B/n/tlastModifiedDate:/n/t/t"+(List1.get(i)).getmTime());
}
}
1>在程序information文件夹下,存在一个文件(sortconfig.txt):用户可以根据需要来更改结果输出时的排序方式(如:按文件名称、按文件大小、按修改时间)。
2>在程序information文件夹下,存在一个文件(result.txt):用来存储用户在执行程序时,所有的异常信息。
3>在程序information文件夹下,存在一个文件(Exception.log):用来存储用户在执行程序时所有的异常信息。
假设本程序有两种查询方式:
1)-n是指按照文件名查找
java FileSearcher -n c:/temp b
该命令可以查找到C:/temp文件夹下,所有以b开头的文件或文件夹。
2)-c是按照文件内容查找
java FileSearcher -c c:/temp b
该命令可以查询到C:/temp文件夹下,所有包含b的文本文档。