买飞机票
- 机器价格按照淡季旺季、头等舱经济舱收费、输入机票原价、月份和头等舱或经济舱
- 旺季(5-10)头等舱9折 经济舱8.5折
淡季 (11-4) 头等舱7折 经济舱6.5折
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
//让用户输入原价 月份 仓位类型
Scanner sc = new Scanner(System.in);
System.out.println("请您输入机票原价: ");
double money = sc.nextDouble();
System.out.println("请您输入机票月份: ");
int month = sc.nextInt();
System.out.println("请您输入仓位类型: ");
String type = sc.next();
System.out.println("机票优惠后价格"+ calc(money,month,type));
}
public static double calc(double money,int month,String type) {
if (month >= 5 && month <= 10) {
switch (type) {
case "头等舱":
money *= 0.9;
break;
case "经济舱":
money *= 0.85;
break;
default:
System.out.println("您输入的有问题");
money = -1;
}
} else if (month == 11 || month == 12 || month >= 1 && month <= 4) {
switch (type) {
case "头等舱":
money *= 0.7;
break;
case "经济舱":
money *= 0.65;
break;
default:
System.out.println("您输入的有问题");
money = -1;
}
} else {
System.out.println("您输入价格有误");
return -1;
}
return money;
}}
总结
- 遇到判断值匹配的时候选择什么结构实现?
switch分支结构 - 遇到判断区间范围的时候选择什么结构?
if分支结构
找素数
- 判断101-200间有多个素数 并输出所有素数
public class practice2 {
public static void main(String[] args) {
for (int i = 101; i <= 200 ; i++) {
boolean flag = true;//一开始认为是素数
for (int j = 2; j < i/2; j++) {
if(i % j == 0){
flag = false;
break;
}
}
if(flag){
System.out.print(i+"\t");
}
}
}
}
开发验证码
- 定义一个方法 随机产生一个5位数验证码 每位可能是数字、大写、小写字母
import java.util.Random;
public class Pract3 {
public static void main(String[] args) {
//获得一个随机验证码
String code = creatCode(5);
System.out.println("验证码"+code);
}
public static String creatCode(int n){
String code = "";
//2.定义一个for循环 循环n次 依次生成随机字符
Random r = new Random();
for (int i = 0; i < n; i++) {
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:
//数字字符
code += r.nextInt(10);//0-9
break;
}
}return code;
}
@Override
public int hashCode() {
return super.hashCode();
}
}
核心逻辑
- 定义一个String变量存储验证码字符
- 定义一个for循环 循环5次
- 随机生成0 1 2的数据 依次代表当前位置要生成大写 小写 数字
- 把0 1 2 交给switch生成对应类型的随机字符 把字符交给String变量
- 循环结束后 返回String类型的变量即是所求的验证码结果
把一个数组中的元素复制到另一个数组中
public class Practice4 {
public static void main(String[] args) {
int[] arr1= {11,23,3,4,};
int[] arr2=new int[arr1.length];
copy(arr1,arr2);
printArray(arr1);
printArray(arr2);
}
public static void copy(int[] arr1,int[] arr2){
for (int i = 0; i < arr1.length; i++) {
arr2[i]=arr1[i];
}
}
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("]");
}
}
- 数组的拷贝需要创建一个新数组 把原来数组的元素赋值过来
在这里插入代码片public class Practice4 {
public static void main(String[] args) {
int[] arr1= {11,23,3,4,};
int[] arr2=new int[arr1.length];
copy(arr1,arr2);
printArray(arr1);
printArray(arr2);
}
public static void copy(int[] arr1,int[] arr2){
for (int i = 0; i < arr1.length; i++) {
arr2[i]=arr1[i];
}
}
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("]");
}
}
评委打分
- 6名评委打分 分数范围为0-100 选手最后得分为:去掉最高分 去掉最低分后的4个评委的平均分
import java.util.Scanner;
public class PRactice5 {
public static void main(String[] args) {
int[] scores = new int[6];
Scanner sc = new Scanner(System.in);
for (int i = 0; i < scores.length; i++) {
System.out.println("请您输入第"+(i+1)+"个评委的分数: ");
int score = sc.nextInt();
scores[i]=score;
}
int max = scores[0];
int min = scores[0];
int sum = 0;
for (int i = 0; i < scores.length; i++) {
if (scores[i]> max){
max = scores[i];
}
if (scores[i]<min){
min = scores[i];
}
sum += scores[i];
}
double result;
result = (sum - max - min) / (scores.length - 2);
System.out.println("最终得分为"+ result );
}
}
数字加密
- 要求:某系统的数字密码 先得到每位数 然后每位数都加5 再对10取余 最后将所有数字反转 得到一串新数
import java.util.Scanner;
public class Practice6 {
public static void main(String[] args) {
System.out.println("请您输入数字: ");
Scanner sc = new Scanner(System.in);
int length = sc.nextInt();4
int[] arr = new int[length];
for (int i = 0; i < arr.length ; i++) {
System.out.println("请输入要加密的第"+(i + 1)+"个数字: ");
int score = sc.nextInt();
arr[i]= score;
}
printArray(arr);
for (int i = 0; i < arr.length; i++) {
arr[i] = ( arr[i] + 5 )%10;
}
for (int i = 0,j = arr.length - 1; i < j; i++,j--) {
int temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
printArray(arr);
}
public static void printArray(int[] arr){
System.out.println("[");
for (int i = 0; i < arr.length; i++) {
System.out.print(i == arr.length - 1 ?arr[i]:arr[i]+",");
}
System.out.println("]");
}
}
- 如何完成数组元素反转?
1.定义2个变量分别占据数组首尾
2.一个变量往前走 一个变量往后走 同步交换双方位置