目录
一、案例1-买飞机票
总结:遇到值匹配时使用switch分支实现;遇到区间范围的时候选择if分支实现
package com.pikaqiu.demo;
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入机票价格为:");
double price = sc.nextDouble();
System.out.print("请输入仓位类型(头等舱或者经济舱)为:");
String type = sc.next();
System.out.print("请输入月份信息(1-12)为:");
int month = sc.nextInt();
System.out.println("--------------------");
double money = calculate(price,type,month);
System.out.println("机票最终价格为:" + money);
}
//定义方法-计算机票价格
public static double calculate(double price, String type, int month) {
if((month >= 1 && month <= 4) || (month >= 11 && month <= 12)){
switch(type){
case "头等舱" :
price *= 0.7;
break;
case "经济舱" :
price *= 0.65;
break;
default:
System.out.println("您输入的仓位类型有误!!!");
price = -1; //表示无法计算价格
}
}else if(month >= 5 && month <= 10){
switch(type){
case "头等舱" :
price *= 0.9;
break;
case "经济舱" :
price *= 0.85;
break;
default:
System.out.println("您输入的仓位类型有误!!!");
price = -1; //表示无法计算价格
}
}else{
System.out.println("您输入的月份有误!!!");
}
return price;
}
}
二、案例2-找素数
需求:判断101-200之间有多少个素数,并输出所有素数
package com.pikaqiu.demo;
public class Test2 {
public static void main(String[] args) {
int number = find();
System.out.println("101-200之间的素数个数为:" + number);
}
//定义方法-找素数
public static int find(){
int count = 0;
System.out.print("101-200之间的素数为: ");
//1.拿到101-200之间的全部数据
for (int i = 101; i <= 200; i++) {
//信号位:标记
boolean flag = true; //假设认为该数为素数
//2.判断是否是素数
for(int j = 2 ; j < i / 2 ; j++){
if(i % j == 0){
flag = false;
break;
}
}
//3.根据判断结果判断是否输出这个数
if(flag){
System.out.print(i + " ");
count++;
}
}
System.out.println();
return count;
}
}
三、案例3-开发验证码
需求:定义一个方法实现随机产生一个5位的验证码,每位可能是数字、大写字母、小写字母
package com.pikaqiu.demo;
import java.util.Random;
public class Test3 {
public static void main(String[] args) {
System.out.println("随机生成的五位验证码为:" + createCode(5));
}
//定义方法-获得验证码
public static String createCode(int n){
//定义变量存放验证码
String code = "";
Random r = new Random();
//定义循环生成n位字符
for (int i = 0; i < n; i++) {
//生成一个随机字符:英文大写-0、小写-1,数字-2
int type = r.nextInt(3);
switch (type){
case 0:
//大写字符(A-65到Z-65+25)
char ch = (char) (r.nextInt(26) + 65);
code += ch;
break;
case 1:
//小写字符(a-97到z-97+25)
char ch1 = (char) (r.nextInt(26) + 97);
code += ch1;
break;
case 2:
//数字字符(0-9)
code += r.nextInt(10);
break;
}
}
return code;
}
}
四、案例4-数组元素的复制
需求:把一个数组中的元素复制到另一个数组中去
package com.pikaqiu.demo;
public class Test4 {
public static void main(String[] args) {
int[] arr1 = {1,2,3,4,5};
int[] arr2 = new int[arr1.length];
System.out.print("arr1数组元素为: ");
print(arr1);
System.out.println();
System.out.print("arr2数组元素为: ");
copy(arr1,arr2);
print(arr2);
}
//定义方法-数组元素复制
public static void copy(int[] arr1, int[] arr2){
for (int i = 0; i < arr1.length; i++) {
arr2[i] = arr1[i];
}
}
//定义方法-打印数组
public static void print(int[] arr){
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
}
五、案例5-评委打分
package com.pikaqiu.demo;
import java.util.Scanner;
public class Test5 {
public static void main(String[] args) {
//用一个数组存放评委的评分
int[] scores = new int[6];
//获取6个评委的打分情况
Scanner sc = new Scanner(System.in);
for (int i = 0; i < scores.length; i++) {
System.out.print("第" + (i+1) + "个评委所给分数为: ");
int data = sc.nextInt();
scores[i] = data;
}
//得到最高分和最低分
int max = max(scores);
System.out.println("去掉一个最高分:" + max);
int min = min(scores);
System.out.println("去掉一个最低分:" + min);
//输出最后得分
System.out.println("最后得分为:" + average(scores,max,min));
}
//定义方法-求数组中的最大值
public static int max(int[] a){
int maxnum = a[0];
for (int i = 1; i < a.length; i++) {
if(maxnum < a[i]){
maxnum = a[i];
}
}
return maxnum;
}
//定义方法-求数组中的最小值
public static int min(int[] a){
int minnum = a[0];
for (int i = 1; i < a.length; i++) {
if(minnum > a[i]){
minnum = a[i];
}
}
return minnum;
}
//定义方法-计算平均分
public static double average(int[] a,int max,int min){
double sum = 0;
for (int i = 0; i <a.length; i++) {
if(a[i] != max && a[i] != min){
sum += a[i];
}
}
sum /= (a.length-2);
return sum;
}
}
六、案例6-数字加密
package com.pikaqiu.demo;
import java.util.Scanner;
public class Test6 {
public static void main(String[] args) {
int number = getNumber();
//得到这四个数
int ge = number % 10;
int shi = number / 10 % 10;
int bai = number / 100 % 10;
int qian = number / 1000;
//每个数字加5,之后再对10取余
int ge1 = (ge + 5) % 10;
int shi1 = (shi + 5) % 10;
int bai1 = (bai + 5) % 10;
int qian1 = (qian + 5) % 10;
//将四位数反转,得到最后加密结果
int locknumber = ge1 * 1000 + shi1 * 100 + bai1 * 10 + qian1;
System.out.println("加密后的四位数为:" + locknumber);
}
//定义方法-获取一个四位数
public static int getNumber(){
//输入一个四位整数
Scanner sc = new Scanner(System.in);
while(true) {
System.out.print("请输入一个四位数:");
int number = sc.nextInt();
if (number >= 1000 && number <= 9999) {
return number;
} else {
System.out.println("输入数字有误,请重新输入一个四位数!!!");
}
}
}
}
七、案例7-模拟双色球
package com.pikaqiu.demo;
import java.util.Random;
import java.util.Scanner;
public class Test7 {
public static void main(String[] args) {
//1.输出用户输入的号码
int[] inputNumbers = usersInputNumbers();
System.out.print("用户的号码为: [");
for (int i = 0; i < inputNumbers.length; i++) {
System.out.print(i == inputNumbers.length - 1 ? inputNumbers[i] : inputNumbers[i] + ",");
}
System.out.println("]");
//2.接收中奖号码
int[] luckNumbers = createLuckNumbers();
System.out.print("中奖号码为: [");
for (int i = 0; i < luckNumbers.length; i++) {
System.out.print(i == luckNumbers.length - 1 ? luckNumbers[i] : luckNumbers[i] + ",");
}
System.out.println("]");
//3.判断用户最终获得的奖金
int[] count = judge(luckNumbers, inputNumbers);
if ((count[0] == 0 && count[1] == 1) || (count[0] == 1 && count[1] == 1) || (count[0] == 2 && count[1] == 1)) {
System.out.println("恭喜你中了六等奖,获得奖金5元~~~");
} else if ((count[0] == 3 && count[1] == 1) || (count[0] == 4 && count[1] == 0)) {
System.out.println("恭喜你中了五等奖,获得奖金10元~~~");
} else if ((count[0] == 4 && count[1] == 1) || (count[0] == 5 && count[1] == 0)) {
System.out.println("恭喜你中了四等奖,获得奖金200元~~~");
} else if (count[0] == 5 && count[1] == 1) {
System.out.println("恭喜你中了三等奖,获得奖金3000元~~~");
} else if (count[0] == 6 && count[1] == 0) {
System.out.println("恭喜你中了三等奖,获得奖金500万元~~~");
} else if (count[0] == 6 && count[1] == 1) {
System.out.println("恭喜你中了三等奖,获得奖金1000万元~~~");
} else {
System.out.println("很遗憾,你没有中奖,再接再厉吧~~~");
}
}
//1.定义方法-随机生成一组中奖号码
public static int[] createLuckNumbers() {
int[] luckNumber = new int[7];
Random r = new Random();
for (int i = 0; i < 6; i++) {
while(true){
int data = r.nextInt(33) + 1;
//判断随机数是否重复
boolean flag = true; //假设没有重复
for (int j = 0; j < i; j++) {
if(luckNumber[i] == data){
flag = false;
break;
}
}
if(flag){
luckNumber[i] = data;
break;
}
}
}
int data = r.nextInt(16) + 1;
luckNumber[6]=data;
return luckNumber;
}
//2.定义方法-用户输入一组双色球号码
public static int[] usersInputNumbers(){
int[] number = new int[7];
Scanner sc = new Scanner(System.in);
for (int i = 0; i < 6; i++) {
while(true){
System.out.print("请输入红色球号码(1-33):");
int data = sc.nextInt();
if(data >= 1 && data <= 33){
number[i] = data;
break;
}else{
System.out.println("输入数据有误,重新输入!!!");
}
}
}
System.out.print("请输入蓝色球的号码(1-16):");
int data = sc.nextInt();
number[6] = data;
return number;
}
//3.定义方法-判断用户中奖情况
public static int[] judge(int[] luckNumbers,int[] inputNumber){
//定义一个数组接收红、蓝双色球相同的个数
int[] count = {0,0};
for (int i = 0; i < 6; i++) {
if(luckNumbers[i] == inputNumber[i]){
count[0]++;
}
}
if(luckNumbers[6] == inputNumber[6]){
count[1]++;
}
return count;
}
}
package com.pikaqiu.demo;
import java.util.Random;
import java.util.Scanner;
public class Test7 {
public static void main(String[] args) {
//1.输出用户输入的号码
int[] inputNumbers = usersInputNumbers();
System.out.print("用户的号码为: [");
for (int i = 0; i < inputNumbers.length; i++) {
System.out.print(i == inputNumbers.length - 1 ? inputNumbers[i] : inputNumbers[i] + ",");
}
System.out.println("]");
//2.接收中奖号码
int[] luckNumbers = createLuckNumbers();
System.out.print("中奖号码为: [");
for (int i = 0; i < luckNumbers.length; i++) {
System.out.print(i == luckNumbers.length - 1 ? luckNumbers[i] : luckNumbers[i] + ",");
}
System.out.println("]");
//3.判断用户最终获得的奖金
int[] count = judge(luckNumbers, inputNumbers);
if ((count[0] == 0 && count[1] == 1) || (count[0] == 1 && count[1] == 1) || (count[0] == 2 && count[1] == 1)) {
System.out.println("恭喜你中了六等奖,获得奖金5元~~~");
} else if ((count[0] == 3 && count[1] == 1) || (count[0] == 4 && count[1] == 0)) {
System.out.println("恭喜你中了五等奖,获得奖金10元~~~");
} else if ((count[0] == 4 && count[1] == 1) || (count[0] == 5 && count[1] == 0)) {
System.out.println("恭喜你中了四等奖,获得奖金200元~~~");
} else if (count[0] == 5 && count[1] == 1) {
System.out.println("恭喜你中了三等奖,获得奖金3000元~~~");
} else if (count[0] == 6 && count[1] == 0) {
System.out.println("恭喜你中了三等奖,获得奖金500万元~~~");
} else if (count[0] == 6 && count[1] == 1) {
System.out.println("恭喜你中了三等奖,获得奖金1000万元~~~");
} else {
System.out.println("很遗憾,你没有中奖,再接再厉吧~~~");
}
}
//1.定义方法-随机生成一组中奖号码
public static int[] createLuckNumbers() {
int[] luckNumber = new int[7];
Random r = new Random();
for (int i = 0; i < 6; i++) {
while(true){
int data = r.nextInt(33) + 1;
//判断随机数是否重复
boolean flag = true; //假设没有重复
for (int j = 0; j < i; j++) {
if(luckNumber[i] == data){
flag = false;
break;
}
}
if(flag){
luckNumber[i] = data;
break;
}
}
}
int data = r.nextInt(16) + 1;
luckNumber[6]=data;
return luckNumber;
}
//2.定义方法-用户输入一组双色球号码
public static int[] usersInputNumbers(){
int[] number = new int[7];
Scanner sc = new Scanner(System.in);
for (int i = 0; i < 6; i++) {
while(true){
System.out.print("请输入红色球号码(1-33):");
int data = sc.nextInt();
if(data >= 1 && data <= 33){
number[i] = data;
break;
}else{
System.out.println("输入数据有误,重新输入!!!");
}
}
}
System.out.print("请输入蓝色球的号码(1-16):");
int data = sc.nextInt();
number[6] = data;
return number;
}
//3.定义方法-判断用户中奖情况
public static int[] judge(int[] luckNumbers,int[] inputNumber){
//定义一个数组接收红、蓝双色球相同的个数
int[] count = {0,0};
for (int i = 0; i < 6; i++) {
if(luckNumbers[i] == inputNumber[i]){
count[0]++;
}
}
if(luckNumbers[6] == inputNumber[6]){
count[1]++;
}
return count;
}
}