- 
遇到需要通过判断数据在哪个区间来决定执行哪个业务,应该使用if分支结构实现;遇到需要通过判断数据匹配哪个值来决定执行哪个业务,应该使用switch分支结构实现。
 - 
如果一个方法里做的事比较多,一般把多个事拆成多个方法。
 - 
数组的拷贝事创建出一个与原数组一模一样的数组。
 - 
找素数案例:
- 
信号位思想:
public class Test7 { public static void main(String[] args) { // 目标:完成找素数。 System.out.println("当前素数的个数是:" + search(101, 200)); } public static int search(int start, int end){ int count = 0; // start = 101 end = 200 // 1、定义一个for循环找到101到200之间的每个数据 for (int i = start; i <= end ; i++) { // i = 101 102 103 ... 199 200 // 信号位思想 boolean flag = true; // 假设的意思:默认当前i记住的数据是素数。 // 2、判断当前i记住的这个数据是否是素数。 for (int j = 2; j <= i / 2; j++) { if(i % j == 0){ // i当前记住的这个数据不是素数了 flag = false; break; } } // 3、根据判定的结果决定是否输出i当前记住的数据:是素数才输出展示。 if(flag){ System.out.println(i); count++; } } return count; } } - 
拦截:
public class Test7_2 { public static void main(String[] args) { // 目标:完成找素数2。 // 1、定义一个for循环,产生101-200之间的每个数据 int count = 0; OUT: // 为外部循环指定标签 for (int i = 101; i <= 200; i++) { // i = 101 102 103 ... 199 200 // 2、拦截判断该数是否是素数 for (int j = 2; j <= i / 2; j++) { if(i % j == 0) { // 这个数肯定不是素数,不能打印 continue OUT; // 结束外部循环的当次执行! } } count++; System.out.println(i); } System.out.println("个数是:" + count); } } - 
public class Test7_3 { public static void main(String[] args) { int count = 0; for (int i = 101; i <= 200; i++) { // i = 101 102 103 ... 199 200 // i遍历到的当前数据是否事素数,是则输出,不是则不输出 if(check(i)){ System.out.println(i); count++; } } System.out.println("101到200之间有" + count +"个素数"); } public static boolean check(int data) { for (int i = 2; i <= data / 2; i++) { if (data % i == 0) { return false; } } return true; } } 
 - 
 - 
模拟双色球:
import java.util.Random; import java.util.Scanner; public class Test10 { public static void main(String[] args) { // 目标:完成双色球系统的开发。 int[] userNumbers = userSelectNumbers(); System.out.println("您投注的号码:"); printArray(userNumbers); int[] luckNumbers = createLuckNumbers(); System.out.println("中奖的号码:"); printArray(luckNumbers); judge(userNumbers, luckNumbers); } /** 1、设计一个方法,用于让用户投注一组号码并返回(前6个是红球号码,最后1个是蓝球号码 )*/ public static int[] userSelectNumbers(){ // 2、创建一个整型数组,用于存储用户投注的7个号码(前6个是红球号码,最后1个是蓝球号码 ) int[] numbers = new int[7]; // numbers = [0, 0, 0, 0, 0, 0, 0] // 0 1 2 3 4 5 6 Scanner sc = new Scanner(System.in); // 3、遍历前6个位置,让用户依次投注6个红球号码,存入 for (int i = 0; i < numbers.length - 1; i++) { // i = 0 1 2 3 4 5 while (true) { // 4、开始让用户为当前位置投注一个红球号码(1-33之间,不能重复) System.out.println("请您输入第" + (i + 1) + "个红球号码(1-33之间,不能重复):"); int number = sc.nextInt(); // 5、先判断用户输入的红球号码是否在1-33之间 if(number < 1 || number > 33){ System.out.println("对不起,您输入的红球号码不在1-33之间,请确认!"); }else { // 号码是在1-33之间了,接着还要继续判断这个号码是否重复,不重复才可以使用。 if(exist(numbers, number)){ // number当前这个红球号码是重复了。 System.out.println("对不起,您当前输入的红球号码前面选择过,重复了,请确认!"); }else { // number记住的这个号码没有重复了,就可以使用了。 numbers[i] = number; break; // 结束当次投注,结束了当前死循环。 } } } } // 6、投注最后一个蓝球号码。 while (true) { System.out.println("请您输入最后1个蓝球号码(1-16):"); int number = sc.nextInt(); if(number < 1 || number > 16){ System.out.println("对不起,您输入的蓝球号码范围不对!"); }else { numbers[6] = number; break; // 蓝球号码录入成功,结束死循环 } } return numbers; } private static boolean exist(int[] numbers, int number) { // 需求:判断number这个数字是否在numbers数组中存在。 // numbers = [12, 25, 18, 0, 0, 0, 0] // number = 12 for (int i = 0; i < numbers.length; i++) { if(numbers[i] == 0){ break; } if(numbers[i] == number){ return true; } } return false; } public static void printArray(int[] arr) { System.out.print("["); for (int i = 0; i < arr.length; i++) { System.out.print(i == arr.length - 1 ? arr[i] : arr[i] + ", "); } System.out.println("]"); } /** 2、设计一个方法:随机一组中奖号码出来(6个红球号码,1个蓝球号码 )*/ public static int[] createLuckNumbers(){ // 1、创建一个整型数组,用于存储这7个号码 int[] numbers = new int[7]; Random r = new Random(); // 2、遍历前6个位置处,依次随机一个红球号码存入(1-33 不重复) for (int i = 0; i < numbers.length - 1; i++) { // i = 0 1 2 3 4 5 while (true) { // 3、为当前这个位置随机一个红球号码出来存入。 1 - 33 ==> -1 ===> (0 , 32) + 1 int number = r.nextInt(33) + 1; // 4、判断这个号码是否之前出现过(红球号码不能重复)。 if(!exist(numbers, number)){ // number不重复。 numbers[i] = number; break; // 结束死循环,代表找到了当前这个位置的一个不重复的红球号码了。 } } } // 3、录入一个蓝球号码。 1-16 numbers[6] = r.nextInt(16) + 1; return numbers; } /** 3、设计一个方法,用于判断用户的中奖情况 */ public static void judge(int[] userNumbers,int[] luckNumbers){ // userNumbers = [12, 14, 16, 18, 23, 26, 8] // luckNumbers = [16, 17, 18, 19, 26, 32, 8] // 2、分别定义2个变量用于记住红球命中了几个以及蓝球命中了几个 int redCount = 0; int blueCount = 0; // 先判断红球命中的数量。 // 遍历用户投注的号码的前6个红球 for (int i = 0; i < userNumbers.length - 1; i++) { // userNumbers[i] // 开始遍历中奖号码的前6个红球号码,看用户当前选择的这个号码是否命中了 for (int j = 0; j < luckNumbers.length - 1; j++) { if(userNumbers[i] == luckNumbers[j]){ redCount++; break; } } } // 3、判断蓝球是否命中了 blueCount = userNumbers[6] == luckNumbers[6] ? 1 : 0; System.out.println("您命中的红球数量是:" + redCount); System.out.println("您命中的蓝球数量是:" + blueCount); // 4、判断中奖详情,并输出结果 if(redCount == 6 && blueCount == 1){ System.out.println("恭喜您,中奖1000万,可以开始享受人生了~~~"); }else if(redCount == 6 && blueCount == 0){ System.out.println("恭喜您,中奖500万,可以稍微开始享受人生了~~~"); }else if(redCount == 5 && blueCount == 1){ System.out.println("恭喜您,中奖3000元,可以出去吃顿小龙虾了~"); }else if(redCount == 5 && blueCount == 0 || redCount == 4 && blueCount == 1){ System.out.println("恭喜您,中了小奖:200元~"); }else if(redCount == 4 && blueCount == 0 || redCount == 3 && blueCount == 1){ System.out.println("中了10元~"); }else if( redCount < 3 && blueCount == 1){ System.out.println("中了5元~"); }else { System.out.println("感谢您对福利事业做出的巨大贡献~~~"); } } } 
					10-23
					
					255
					
				
			
					255
					
				
					10-15
					
					1036
					
				
			
					1036
					
				
                  
                  
                  
                  
                            
      
          
                
                
                
                
              
                
                
                
                
                
              
                
                
              
            
                  
被折叠的  条评论
		 为什么被折叠?
		 
		 
		
    
  
    
  
            


            