1.买飞机票
- 机票价格按淡季和旺季、头等舱和经济舱收费,输入机票原价、月份、和头等舱或经济舱。
- 按以下规则计算机票价格:旺季(5-10月)头等舱9折,经济舱8.5折;淡季(11月到来年4月)头等舱7折,经济舱6.5折。
import java.util.Scanner;
public class test01 {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入机票原价:");
int ticket = sc.nextInt();
System.out.println("请输入当前的月份:");
int month = sc.nextInt();
System.out.println("请输入当前购买的舱位类别:0--头等舱 1--经济舱");
int seat = sc.nextInt();
if(month >=5 && month <=10) {
if(seat==0) {
ticket = (int)(ticket *0.9);//强制转类型
}else if(seat==1) {
ticket = (int)(ticket *0.85);
}else {
System.out.println("输入舱位类型不合理");
}
}else if((month >=1 && month <=4) ||(month >=11 && month <=12) ) {
if(seat==0) {
ticket = (int)(ticket *0.7);//强制转类型
}else if(seat==1) {
ticket = (int)(ticket *0.65);
}else {
System.out.println("输入舱位类型不合理");
}
}
else {
System.out.println("输入月份不合理");
}
System.out.println("您的折后机票价为:"+ticket);
}
}
输出结果:
请输入机票原价:
255
请输入当前的月份:
12
请输入当前购买的舱位类别:0--头等舱 1--经济舱
1
您的折后机票价为:165
写一个Getprice方法解决:
import java.util.Scanner;
public class test01 {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入机票原价:");
int ticket = sc.nextInt();
System.out.println("请输入当前的月份:");
int month = sc.nextInt();
System.out.println("请输入当前购买的舱位类别:0--头等舱 1--经济舱");
int seat = sc.nextInt();
if(month >=5 && month <=10) {
ticket =Getprice(ticket,seat,0.9,0.85);
}else if((month >=1 && month <=4) ||(month >=11 && month <=12) ) {
ticket =Getprice(ticket,seat,0.7,0.65);
}
else {
System.out.println("输入月份不合理");
}
System.out.println("您的折后机票价为:"+ticket);
}
public static int Getprice(int ticket,int seat,double v0,double v1) {
if(seat==0) {
ticket = (int)(ticket *v0);//强制转类型
}else if(seat==1) {
ticket = (int)(ticket *v1);
}else {
System.out.println("输入舱位类型不合理");
}
return ticket;
}
}
2.找质数
判断101~200之间有多少个素数,并输出。(素数又称质数,一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数)
public class test01 {
public static void main(String args[]) {
int count=0;
for(int i=101;i<=200;i++) {
boolean flag = true;
for(int j=2;j<i;j++) {
if(i%j == 0) {
flag = false;
break;
}
}
if(flag) {
System.out.println("数字"+i+"是一个质数");
count++;
}else {
System.out.println("数字"+i+"不是一个质数");
}
}
System.out.println("共有"+count+"个质数");
}
}
输出结果:
数字101是一个质数
数字102不是一个质数
......
数字200不是一个质数
共有21个质数
3.开发验证码
定义一个方法实现随机产生一个5位验证码,验证码的格式为:长度为5;前四位是大写字母或小写字母;最后一位是数字;
涉及知识:
1.ASCII码对照:大写字母65–90;小写字母:97–122;
2.Random随机数的使用
Random random = new Random();.//声明
int number=random.nextInt(100);//获取0到99之间的随机数字,并返回给number
代码:
import java.util.Random;
public class test01 {
public static void main(String args[]) {
//将小写字母和大写字母存储到一个数组里,再随机抽取一个索引
char chs[] = new char[52];
for(int i=0;i<52;i++) {
//添加小写字母
if(i>=0&&i<=25) {
chs[i] = (char)(97+i);
}else {
//添加大写字母
chs[i] = (char)(65+i-26);//因为i为位置,前26个放置了小写字母,需要减掉26从0开始
}
}
//声明一个字符串,用来放置随机生成的结果
String result = "";//初始字符串为空字符串
Random random = new Random();
for(int j=0;j<4;j++) {
int number = random.nextInt(chs.length);//生成0~51之间的随机数
result = result + chs[number];
}
int number2 = random.nextInt(10);//生成0~9之间的随机数
result = result + number2;
System.out.println(result);
}
}
4.数组元素的复制
把一个数组的元素复制到一个新数组中去
public class test01 {
public static void main(String args[]) {
//两个for循环即可
int s1[] = {1,2,3,4,5};
int s2[] = new int[s1.length];
for(int i=0;i<s1.length;i++) {
s2[i] = s1[i];
}
for(int i=0;i<s2.length;i++) {
System.out.println(s2[i]);
}
}
}
5.评委打分
歌唱比赛中,有6名评委打分,分数是【0~100】的整数,选手最后得分:去掉最高分、最低分,取剩下的4个评委的平均分。
import java.util.*;
public class test01 {
public static void main(String[] args) {
//数组存储分数
int score[] = getScore();
int max= getMax(score);
int min= getMin(score);
int sum= getAll(score);
double result = (sum-max-min)/(score.length-2);
System.out.println("得分:"+result);
}
public static int[] getScore() {
//未知情况,使用动态数组
int scores[] = new int[6];
Scanner sc = new Scanner(System.in);
for(int i=0;i<scores.length;) {
System.out.println("请输入第"+i+"位的评委分数:");
int score =sc.nextInt();
if(i>=0&&i<=100) {
scores[i] = score;
i++;//当数据不符合范围时,i不变,仍需重新输入
}
else {
System.out.println("输入不符合要求!请重新输入第"+i+"位的评委分数:");
}
}
return scores;
}
public static int getMax(int[] score){
int max = 0;
for(int i=0;i<score.length;i++) {
if(score[i]>max) {
max = score[i];
}
}
return max;
}
public static int getMin(int[] score){
int min = 0;
for(int i=0;i<score.length;i++) {
if(score[i]<min) {
min = score[i];
}
}
return min;
}
public static int getAll(int[] score){
int sum = 0;
for(int i=0;i<score.length;i++) {
sum = sum +score[i];
}
return sum;
}
}
运行结果:
请输入第0位的评委分数:
74
请输入第1位的评委分数:
20
请输入第2位的评委分数:
86
请输入第3位的评委分数:
56
请输入第4位的评委分数:
55
请输入第5位的评委分数:
66
得分:67.0
6.数字加密
某系统的数字密码(大于0),比如1983,采用加密传输。先得到每位数,对每位数+5,再对10求余,最后将所有数字反转(倒换顺序),得到一串新数。
import java.util.*;
public class test01 {
public static void main(String args[]) {
//将获取的数字放到数组中
int arrs[] = getNumber();
//对数字+5再对10取余
for(int i=0;i<arrs.length;i++) {
arrs[i]=(arrs[i]+5)%10;
}
System.out.println("数组为:"+Arrays.toString(arrs));
//翻转数组
for(int i=0,j=arrs.length-1;i<j;i++,j--) {
int temp = arrs[i];
arrs[i] = arrs[j];
arrs[j] = temp;
}
System.out.println("翻转后为:"+Arrays.toString(arrs));
//将数组里的数字进行拼接
int number = 0;
for(int i=0;i<arrs.length;i++) {
number = number*10 + arrs[i];
}
System.out.println("加密后的数字为:"+number);
}
public static int[] getNumber() {
System.out.println("请输入需要加密的数字:");
Scanner sc = new Scanner(System.in);
int number = sc.nextInt();
//将数组拆解成个位数
int temp = number;
//先获取数字的组成个数
int count= 0;
while(number!=0) {
//对数字进行整除10运算,可得出数字字数,当number/10为0时代表已整除完
number = number/10;
count++;
}
System.out.println("数字个数为:"+count);
//根据字数获取每一个数,并存到数组中
int arr[] = new int[count];
int i = count-1;
while(count!=0) {
int n = temp %10;//假设temp=125,125%10=5,此处获取的是最低位的数
arr[i] = n;//需要倒序输入,因为是从最低位获取
temp = temp/10;//125/10=12,再将最低数去掉
count--;
i--;
}
System.out.println("数字拆解二后为:"+Arrays.toString(arr));
return arr;
}
}
运行结果:
请输入需要加密的数字:
8341
数字个数为:4
数字拆解二后为:[8, 3, 4, 1]
数组为:[3, 8, 9, 6]
翻转后为:[6, 9, 8, 3]
加密后的数字为:6983
7.数字解密
将6中的数字按相同方式进行解密。代码与上述基本相似。
关于取余:个位数范围为0~9,+5后的范围为5-14,对10取余得到:5,6,7,8,9,0,1,2,3,4,对于当前取余后得到的数5-9来说,取余前即为她们本身,对于0–4,取余前为10–14,需再+10.
8.抢红包
直播抽奖现金红包,金额为{2,588,888,1000,10000}。编写代码,模拟抽奖过程,打印出每个奖项,奖项的出现次数要随机且不重复。如:
2的奖金被抽出
888的奖金被抽出
10000的奖金被抽出
588的奖金被抽出
1000的奖金被抽出
import java.util.*;
public class test01 {
public static void main(String args[]) {
/*
* 定义一个数组存储抽奖结果 newArr[]
* 定义一个方法,对于当前生成的随机数,判断是否存在数组里 newArr[]
* 若存在,则重新生成
*/
int arr[] = {2,588,888,1000,10000};
int newArr[] = new int[arr.length];
//抽5次奖
//随机生成索引
Random r= new Random();
for(int i=0;i<5;) {
int randomIndex = r.nextInt(arr.length);
int prize = arr[randomIndex];
//判断奖项是否已经抽过
boolean flag = getPrize(newArr,prize);
//如果不存在,则抽取该奖项,并放到数组newArr[]记录
if(!flag) {
newArr[i] = prize;
i++;// 只有当不存在时,才进行下一次循环,如果存在,则i不改变,重新抽取
}
}
for(int i=0;i<newArr.length;i++) {
System.out.println(newArr[i]+"奖项已抽出");
}
}
public static boolean getPrize(int arr[],int prize) {
for(int i=0;i<arr.length;i++) {
if(arr[i]==prize) {
return true;
}
}
return false;
}
}
输出结果:
1000奖项已抽出
10000奖项已抽出
888奖项已抽出
2奖项已抽出
588奖项已抽出
9.模拟双色球
import java.util.*;
public class test01 {
public static void main(String args[]) {
//1.创建中奖号码
int arrs[] = CreateNumber();
System.out.println("=================");
System.out.println("中奖号码为:"+Arrays.toString(arrs));
System.out.println("=================");
//2.创建用户抽奖号码
int userarrs[] = CreateUsernumber();
//3.判断是否中奖
int redcount = 0;
int bluecount = 0;
//查找红球的中奖个数
for(int i=0;i<6;i++) {
for(int j=0;j<6;j++) {
if(userarrs[i]==arrs[j]) {
redcount++;
break;
}
}
}
if(arrs[6]==userarrs[6]) {
bluecount++;
}
//判断个数
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)||(redcount==5&&bluecount==0)) {
System.out.println("恭喜中奖,奖金为3000!");
}
else if((redcount==4&&bluecount==1)||(redcount==4&&bluecount==0)) {
System.out.println("恭喜中奖,奖金为200!");
}
else if((redcount==3&&bluecount==1)||(redcount==2&&bluecount==1)) {
System.out.println("恭喜中奖,奖金为10!");
}
else if((redcount==1&&bluecount==1)||(redcount==0&&bluecount==1)) {
System.out.println("恭喜中奖,奖金为5!");
}
else {
System.out.println("未中奖!");
}
}
//1.
public static int[] CreateNumber() {
int arr[] = new int[7];
//前6个放红色球
Random r = new Random();
for(int i=0;i<6;) {
//随机生成1个数
int rednumber = r.nextInt(33)+1;//random生成0~32的数,所以需要+1
//需唯一且不重复
boolean flag = isExist(arr,rednumber);
if(!flag) {//如果不存在,使用该号码
arr[i] = rednumber;
i++;//号码合理再进行下次循环,否则重新生成
}
}
//最后一个放蓝色球
int bluenumber = r.nextInt(16)+1;
arr[arr.length-1] = bluenumber;
return arr;
}
//2.
public static int[] CreateUsernumber() {
int userarr[] = new int[7];
//需要用户键盘输入
Scanner sc = new Scanner(System.in);
for(int i=0;i<6;) {
System.out.println("请输入你的第"+(i+1)+"位号码");
int rednumber = sc.nextInt();
boolean flag = isExist(userarr,rednumber);
if(!flag) {//如果不存在,使用该号码
if(rednumber>=1&&rednumber<=33) {
userarr[i] = rednumber;
i++;
}
}
}
System.out.println("请输入你的第"+userarr.length+"位号码");
while(true) {
int bluenumber = sc.nextInt();
if(bluenumber>=1&&bluenumber<=16) {
userarr[userarr.length-1] = bluenumber;
break;
}else {
System.out.println("请重新输入");
}
}
return userarr;
}
//判断一个数是否存在于该数组中
public static boolean isExist(int arr[],int number) {
for(int i=0;i<arr.length;i++) {
if(arr[i]==number) {
return true;
}
}
return false;
}
}
输出结果:
=================
中奖号码为:[3, 26, 7, 28, 23, 22, 4]
=================
请输入你的第1位号码
3
请输入你的第2位号码
10
请输入你的第3位号码
26
请输入你的第4位号码
7
请输入你的第5位号码
22
请输入你的第6位号码
5
请输入你的第7位号码
4
恭喜中奖,奖金为200!