一、买飞机票
需求
机票价格根据淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱。
机票最终价格的计算方式如下:
旺季(5-10月)头等舱9折,经济舱8.5折;
淡季(11月到来年4月)头等舱7折,经济舱6.5折。
①在main函数中执行
import java.util.Scanner;
//买飞机票
public class Demo1 {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
System.out.println("请输入月份(1-12)");
System.out.println("请输入价格");
System.out.println("请输入舱位");
int month=scan.nextInt();
double price=scan.nextDouble();
String cangwei=scan.next();
if(month>=5&&month<=10){
if(cangwei=="头等舱"){
price*=0.9;
}else{
price*=0.85;
}
}else{
if(cangwei=="经济舱"){
price*=0.7;
}else{
price*=0.65;
}
}
System.out.println("最终的价格是:"+price);
}
}
②使用方法来编写:
import java.util.Scanner;
public class Demo2 {
public static void main(String[] args) {
//目标:完成飞机票的价格计算
//1.让用户输入机票原价,月份,舱位类型
Scanner sc=new Scanner(System.in);
System.out.println("请输入机票原价:");
double money=sc.nextDouble();
System.out.println("请输入月份(1-12):");
int month=sc.nextInt();
System.out.println("请输入舱位类型:");
String type=sc.next();
//4.调用方法,统计结果
System.out.println("机票优惠后的价格是"+calc(money,month,type));
}
//2.定义方法类型,统计优惠后的价格返回
public static double calc(double money,int month,String type){
//3.判断用户选择的信息情况
if(month>=5&&month<=10){
//旺季
switch (type){
case "头等舱":
money*=0.9;
break;
case "经济舱":
money*=0.85;
break;
default:
System.out.println("有误");
return -1;
}
}else if((month>10&&month<=12)||(month>=1&&month<=4)){
//淡季
switch (type){
case "头等舱":
money*=0.7;
break;
case "经济舱":
money*=0.65;
break;
default:
System.out.println("有误");
return -1;
}
}else{
System.out.println("输入的有问题");
return -1;
}
return money;
}
}
二、找素数
public class Demo3 {
public static void main(String[] args) {
//定义一个循环,找到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.println(i+"\t");
}
}
}
}
三、开发验证码(随机产生字符和数字)
需求
定义一个方法实现随机产生一个五位的验证码,可能是数字,大写字母,小写字母。
分析
①定义一个方法,生成验证码返回:方法参数是位数、方法的返回值类型是String。
②在方法体内部使用for循环生成指定位数的随机字符,并连接起来。
③把连接好的随机字符作为一组验证码返回。
import java.util.Random;
public class Demo4 {
public static void main(String[] args) {
//调用获取验证码的方法得到一个随机的验证码
String code=creatCode(5);
System.out.println("随机验证码"+code);
}
//定义一个方法返回一个随机验证码:需要返回值申明:String,申明形参:int n
public static String creatCode(int n){
String code="";
Random r = new Random();
//定义一个for循环,循环n次,依次生成随机字符
for(int i=0;i<n;i++){
//生成一个随机字符,英文大小写】数字
int type=r.nextInt(3);
switch (type){
case 0:
//大写字符(A 65~Z 65+25) (0-25)+65
char ch=(char)(r.nextInt(26)+65);
code+=ch;
break;
case 1:
//小写字符
char ch1=(char)(r.nextInt(26)+97);
code+=ch1;
break;
case 2:
//数字
code+=r.nextInt(10);
break;
}
}
return code;
}
}
四、数组元素的复制
需求
把一个数组中的元素复制到另一个新数组中去。
分析
需要动态初始化一个数组,长度与原数组一样。
遍历原数组的每个元素,依次赋值给新数组。
输出两个数组的内容。
public class Demo5 {
public static void main(String[] args) {
int[] arr1={11,22,33,44};
int[] arr2=new int[arr1.length];
copy(arr1,arr2);
printArray(arr1);
printArray(arr2);
}
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("]");
}
public static void copy(int[] arr1,int[] arr2){
for (int i = 0; i < arr1.length; i++) {
arr2[i]=arr1[i];
}
}
}
五、评委打分案例
需求:
在一次比赛中,有6名评委给选手打分,分数范围是【0-100】之间的整数。选手的最后得分为:去掉最高分、最低分后的四个评委的平均分,请完成上述过程并计算出选手的得分。
分析:
①把6个评委的分数录入到程序中去----->使用数组
int [ ] scores=new int [6];
②遍历数组中的每个数据,进行累加求和,并找出最高分和最低分。
③按照分数的计算规则算出平均分。
import java.util.Scanner;
public class Demo8 {
public static void main(String[] args) {
//定义一个动态初始化数组,用于后期录入6个评委的分数
int[] scores=new int[6];
//录入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=(sum-max-min)*1.0/(scores.length-2);
System.out.println("选手最终得分为:"+result);
}
}
六、数字加密
需求
某系统的数字密码:比如1983,采用加密的方式进行传输,规则如下:先得到每位数,然后每位数都加上5,再对5求余,最后将所有数字反转,得到一串新数。
规则图解如下:
import java.util.Scanner;
public class Demo9 {
public static void main(String[] args) {
//需求:数字加密
//定义一个数组存入需要加密的数据
System.out.println("请输入需要加密的数字个数:");
Scanner sc=new Scanner(System.in);
int length=sc.nextInt();
int[] arr=new int[length];
//录入需要加密的数字
for (int i = 0; i < arr.length; i++) {
System.out.println("请您输入加密的第"+(i+1)+"个数字");
int number=sc.nextInt();
arr[i]=number;
}
//打印数组看一下
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.print("[");
for (int i = 0; i < arr.length; i++) {
System.out.print(i==arr.length-1?arr[i]:arr[i]+",");
}
System.out.print("]");
}
}