选彩票

开始练习之前要注意的是:

a)为项目取一个合适的包名称.例如:package ljy.mytest.lotteryselecting;

b) 尽量一个JAVA 文件一个类,这样在以后的查询中也会一目了然,看一眼就知道这个类里面是什么内容。

c) 尽量为每一个方法都写上详细的注释:

例如:

 /**
	 * 选出中奖彩球
	 * @param time 要选多少注彩票
	 * @param total  一共有多少的彩票球
	 * @param aim    一共要选出多少个彩票球
	 * @return 返回保存选中彩球结果的数组
	 */


eclipse中在函数头部添加说明性注释和参数的注释:

1)你在方法前输入/**然后一回车,自动帮你生成方法和参数的注释。

2)或者你在创建方法时,勾选生成注释的选项,也能帮你生成。

3)要把鼠标焦点放在方法里,然后ALT+SHIFT+J

d)保证main()方法中尽量的简洁明了,这就需要你对方法的命名要言简意赅,不要忘记遵守“驼峰命名法”。

e)  要保证你写的方法的可扩展性,不要将其写死了,这也是减少你工作量最主要的方法之一。


题目:

2. 写一个36选7机选程序(如果有一天变为1000选 99 怎么办?)

  机选注数: 1(如果有一天变成选100注又怎么办 ?)

  4 12 14 18 21 32 35   (尽量按从小到大顺序输出)。

/**
 * 
 */
package ljy.mytest.lotteryselecting;

import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;

/**
 * @author fshxxxyydys
 *
 */
	
public class LotterySelecting {  //选彩票的小程序

	/**
	 * @param args
	 */
	static Scanner  scanner  = new  Scanner(System.in); 
	public static void main(String[] args) {
		
		
		int total,aim,time;//总球数,要选球数,注数
		
		
		System.out.print("请输入注数:");
		time = scanner.nextInt();
		System.out.print("请输入总球数:");
		total = scanner.nextInt();
		System.out.print("请输入选球个数:");
		aim = scanner.nextInt();
		
		
		boolean sorted = isSorted();//判断是否需要排序
		
		
		printResults(time,total,aim,sorted); //打印结果
		
	 
	}
	
	
	/**
	 * 确认是否要对选票结果进行排序
	 * @return 返回是否排序的确认结果
	 */
	private static boolean isSorted(){
		
		System.out.print("请确认结果是否排序('y'OR'n'):");
		
		String str = scanner.nextLine();
		
		
		if(str.length() == 0){ //输入回车键处理
			
			str = scanner.nextLine(); 	
		}
		if(str.length() == 1){
			if(str.equalsIgnoreCase("n"))
				return false;
			else if(str.equalsIgnoreCase("y"))
				return true;
			else {
				System.out.println("无法判断,请重新输入~");
				isSorted();
				
			}
		}else {
			System.out.println("无法判断,请重新输入~");
			isSorted();
		}
		
		
		return false;
	}
	
	
	/**
	 * 选出中奖彩球
	 * @param time 要选多少注彩票
	 * @param total  一共有多少的彩票球
	 * @param aim    一共要选出多少个彩票球
	 * @return 返回保存选中彩球结果的数组
	 */
	private static int[] selectLottery ( int total ,int aim,boolean sorted){
		 int[] result = new int[aim]; 
		 Random r = new Random();
		 int temp ;
		 
		 
		 for(int i = 0 ; i < aim ; i++){
			 temp = 1 + r.nextInt(total); //注意:其中随机数中不包含 0
			 
			 if(!isContain(result, temp))
				 result[i] = temp;
			 else 
				 i--;  //保证选的数量足够
		 }
		
		 if(sorted)
			 Arrays.sort(result);
		 
		 
		 return result;
		
	}
	
	
	
	/**
	 * 检测是否已经存在目标彩球
	 * @param result 保存已经选好的彩球的数组
	 * @param target 要检测是否已经存在数组的中的目标彩球
	 * @return 确认是否已存在
	 */
	private  static  boolean isContain(int[] result,int target){
		
		for(int j = 0 ; j < result.length; j++)
			if(result[j] == target)
				return true;
	
		
		return false;
	}
	
	
	
	
	/**
	 * 打印单次选彩票结果
	 * @param result 要打印的数组
	 */
	private static void printArrays(int[] result){
		
		for(int x:result)
			System.out.print(x +"\t");
		
		System.out.println();
	} 

	
	/**
	 * 打印选彩票的所有结果
	 * @param time 要选多少注彩票
	 * @param total  一共有多少的彩票球
	 * @param aim    一共要选出多少个彩票球
	 * @param sorted  是否要排序
	 */
	private static void printResults(int time,int total,int aim,boolean sorted){
		
		for(int i = 0 ; i < time ; i++){
			
			System.out.print("第"+ (i + 1) + "注:");
			int[] temp = selectLottery(total,aim,sorted);
			printArrays(temp);
			
		}
		
	}

}

====================================================================================

Result:

请输入注数:7
请输入总球数:36
请输入选球个数:7
请确认结果是否排序('y'OR'n'):y
第1注:3 6 13 27 283136
第2注:7 17 19 23 242830
第3注:6 14 18 23 283033
第4注:2 3 7 15 182835
第5注:1 2 11 15 223135
第6注:4 5 12 24 252636
第7注:3 14 25 26 272829


====================================================================================

原创出处:http://blog.csdn.net/u012830807
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章