JAVA基础-案例练习
⼀、前⾔
  前⾯学了点基础,可以通过⼀些⼩案例巩固下基础
⼆、实例
package com.hello.base;
import java.util.Random;
import java.util.Scanner;
public class CaseDemo {
public static void main(String[] args) {
//录⼊购买信息,调⽤⽅法得到最终结果
Scanner sc = new Scanner(System.in);
System.out.println("机票原价");
double price = sc.nextDouble();
System.out.println("⽉份");
int month = sc.nextInt();
System.out.println("仓位类型(头等舱、经济舱)");
String type = sc.next();
double rs = calc(price,month,type);
System.out.println("您当前购买机票的价格是:"+rs);
//调⽤寻素数
su();
System.out.print("\n");
/
/调⽤⽣成验证码的⽅法
String code = CreateCode(5);
System.out.println("随机验证码:"+code);
//调⽤元素复制⽅法
int [] arrc1 = {11,22,44};
int [] arrc2 = new int[arrc1.length];
copy(arrc1,arrc2);//此时已完成数组复制,如果想打印出来具体的值,需要再写⼀个⽅法
printArray(arrc1);
printArray(arrc2);
System.out.println("\n");
//调⽤计算评委得分
int [] arrs = new int[6];//定义⼀个动态初始化的数据,⽤于后期录⼊6个分数
Scanner scs = new Scanner(System.in);
for(int i=0;i<arrs.length;i++){
System.out.println("请录⼊第"+(i+1)+"个分数");
int scores = Int();
arrs[i] = scores;//把这个分数存⼊到数组对应的位置
}
calcscore(arrs);
}
//打印复制元素的值的⽅法
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.print("]");
}
/*案例⼀:买机票
1、机票价格按照淡季旺季、头等舱和经济舱收费、输⼊机票原价、⽉份和头等舱或经济舱
2、按照如下规则计算机票价格:旺季(5-10⽉)头等舱9折,经济舱8.5折,淡季(11⽉到来年4⽉)头等舱7折,经济舱6.5折注:遇到判断值匹配的时候使⽤switch分⽀结构实现;遇到判断区间范围的时候选择if分⽀结构实现
*/
public static double calc(double money,int month,String type) {
//判断⽉份是淡季还是旺季
if (month >= 5 && month <= 10) {
//旺季
switch (type) {
case "经济舱":
money *= 0.85;
break;
case "头等舱":
money *= 0.9;
break;
default:
System.out.println("您输⼊的舱位不正确");
money = -1;//当前⽆法计算价格了
}
} else if (month == 11 || month == 12 || month >= 1 && month <= 4) {
//淡季
switch (type) {
case "经济舱":
money *= 0.65;
break;
case "头等舱":
money *= 0.7;
break;
default:
System.out.println("您输⼊的舱位不正确");
money = -1;//当前⽆法计算价格了
}
} else {
System.out.println("⽉份有问题");
money = -1;
}
return money;
}
/*
案例⼆:素数(如果除了1和它本⾝以外,不能被其他正整数整除,就叫素数)
*/
public static void su(){
//定义⼀个循环,到101-200之间的全部数据
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位的验证码,每位可能是数字、⼤写字母、⼩写字母
核⼼逻辑:
1、定义⼀个string类型的变量存储验证码字符
2、定义⼀个for循环,循环5次
3、随机⽣成0|1|2的数据,依次代表当前位置要⽣成数字|⼤写字母|⼩写字母
4、把0、1、2交给switch⽣成对应类型的随机字符,把字符交给string变量
5、循环结束后,返回string类型的变量即是所求的验证码结果。
*/
public static String CreateCode(int n){
//定义⼀个字符串变量记录⽣成的随机字符
String code="";
Random r = new Random();
//定义⼀个for循环,循环n次,依次⽣成随机字符
for(int i=0;i<n;i++){
//⽣成⼀个随机字符,英⽂⼤写⼩写数字(0 1 2)
int type = r.nextInt(3);//0 1 2
switch (type){
case 0:
//⼤写字符(A 65 - Z 65+25) (0-25)+65
//注:A-Z对应的数字是65-90,⽣成随机数65-90的写法为nextInt(26)+65
//减加法 90-65=25,⽣成25个数即(0-26),括号⾥写26,外⾯+65,即随机数从65开始,⾄65+25=90结束char ch = (char) (r.nextInt(26)+65);
code +=ch;
break;
case 1:
//⼩写字符(a 97 - z 97+25) (0-25)+97
char ch1 = (char) (r.nextInt(26)+97);
code +=ch1;
break;
case 2:
//数字字符
code += r.nextInt(10);//0-9
break;
}
}
return code;
}
/*
案例四:数组元素复制:把⼀个数组中的元素复制到另⼀个新数组去
分析:1、需要动态初始化⼀个数组,长度与原数组⼀样;2、遍历原数组的每个元素,依次赋值给新数组;3、输出两个数组的内容
*/
public static void copy(int arrc1[],int arrc2[]){
//完成元素的复制
for(int i=0;i<arrc1.length;i++){
arrc2[i]=arrc1[i];
}
}
/*
java生成随机数的方法案例五:评委打分:有6名评委给选⼿打分,分数范围是[0-100]之间的整数,选⼿的最后得分为去掉最⾼分、最低分后的4个评委的平均分,请完成上述过程并计算出选⼿的得分
分析:1、把6个评委的分数录⼊到程序中去---->使⽤数组  int[] scores = new int[6];
2、遍历数组中每个数据,进⾏累加求和,并出最⾼分、最低分
3、按照分数的计算规则算出平均分。
*/
public static void calcscore(int[] arrs){
//遍历数组中的每个数据,出最⾼分、最低分、总分
int max=arrs[0], min =arrs[0], sum=0;
for (int i=0;i<arrs.length;i++){
if(arrs[i]>max){
max=arrs[i];//替换最⼤值变量存储的数据
}
if(arrs[i]<min){
min=arrs[i];//替换最⼩值变量存储的数据
}
sum +=arrs[i];//  统计总分
}
System.out.println("最⾼分为:"+max);
System.out.println("最低分为:"+min);
double result = (sum-max-min)/(arrs.length-2);
System.out.println("最终得分为:"+result);
}
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。