Java 编程实训

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的文本文档。

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值