目录
1.卖飞机票
2.找质数
3.开发验证码
4.数组元素的复制
5.评委打分
6.数字加密
7.数字解密
8.抢红包
9.模拟双色球
10.二维数组
1.卖飞机票
- 机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱。
- 按照如下规则计算机票价格:旺季(5-10月)头等舱9折,经济舱8.5折,淡季(11月到来年4月)头等舱7折,经济舱6.5折。
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入机票原价:");
int ticket = sc.nextInt();
System.out.print("请输入机票月份(示例:1):");
int month = sc.nextInt();
System.out.print("头等舱请输入:1,经济舱请输入:2 :");
int planeSeat = sc.nextInt();
if (month >= 5 && month <= 10) {
if (planeSeat == 1) {
ticket = (int) (ticket * 0.9);
} else if (planeSeat == 2) {
ticket = (int) (ticket * 0.85);
}else {
System.out.println("不存在此舱位");
}
System.out.println("价格为:" + ticket);
} else if ((month >= 1 && month <= 4) || (month >= 11 && month <= 12)) {
if (planeSeat == 1) {
ticket = (int) (ticket * 0.7);
} else if (planeSeat == 2) {
ticket = (int) (ticket * 0.65);
}else {
System.out.println("不存在此舱位");
}
System.out.println("价格为:" + ticket);
}else {
System.out.println("不存在此月份");
}
}
}
2.找质数
- 判断101~200之间有多少个素数,并输出所有素数。
public class Test1 {
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){
count++;
System.out.println("当前数字"+i+"是质数");
}
}
System.out.println("有"+count+"个质数");
}
}
3.开发验证码
- 定义方法实现随机产生一个5位的验证码
- 验证码格式:长度为5,前四位是大写字母或者小写字母,最后一位是数字
import java.util.Random;
public class Test1 {
public static void main(String[] args) {
char[]arrEnglish=new char[52];
//向数组中添加大小写字母
for (int i = 0; i < arrEnglish.length; i++) {
arrEnglish[i]=(char)(97+i);
if(i>25){
arrEnglish[i]=(char)(65+i-26);
}
}
Random r=new Random();
//定义一个字符串类型的变量,来记录最终结果
String result="";
for (int i = 0; i < 4; i++) {
int randomIdenx=r.nextInt(arrEnglish.length);
//利用随机索引,获取相应元素
result=result+arrEnglish[randomIdenx];
}
int number=r.nextInt(10);
String resultLast=result+number;
System.out.println(resultLast);
}
}
4.数组元素的复制
- 把一个数组的元素复制到一个新的数组中去。
public class Test1 {
public static void main(String[] args) {
int[]arr={1,2,3,4,5,6,7,8,9};
int[]arrNew=new int[arr.length];
for (int i = 0; i < arr.length; i++) {
arrNew[i]=arr[i];
}
for (int i = 0; i < arrNew.length; i++) {
System.out.print(arrNew[i]);
}
}
}
5.评委打分
在唱歌比赛中,有6位评委给选手打分,分数范围是[0-100]之间的整数。选手最后的得分为:去掉最高分,去掉最低分后4位评委的平均分,请完成上述过程并计算出选手得分。
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
int[]score=scoreArr();
int max=getMax(score);
int min=getMin(score);
int avg=getAvg(max,min,score);
System.out.println(avg);
}
//获取最大值
public static int getMax(int[] score) {
int max=0;
for (int i = 0; i < score.length; i++) {
if(max<score[i]){
max=score[i];
}
}
return max;
}
//获取最小值
public static int getMin(int[]score) {
int min=score[0];
for (int i = 0; i < score.length; i++) {
if(min>score[i]){
min=score[i];
}
}
return min;
}
//计算去掉最高分和最低分的平均成绩
public static int getAvg(int max,int min,int[]score) {
int sum=0;
for (int i = 0; i < score.length; i++) {
sum=sum+score[i];
}
int avg=(sum-max-min)/4;
return avg;
}
//获取数组
public static int[] scoreArr(){
int[] score =new int[6];
Scanner sc=new Scanner(System.in);
for (int i = 0; i < score.length; ) {
System.out.print("请评委打分(1~100):");
int temp=sc.nextInt();
if(temp>=1&&temp<=100){
score[i]=temp;
i++; //只有输入数据正确时i才加1
}
else {
System.out.println("数字范围有误");
}
}
return score;
}
}
6.数字加密
- 某系统的数字密码(大于0),比如1983,采用加密方式传输。
- 规则如下:先得到每位数,然后每位数都加上5,再对10求余,最后将所有数字反转,得到一串新数。
//1983加密
public class Test1 {
public static void main(String[] args) {
int number1=1983;
int temp1=number1;
int count=0;
//将数字的每一位写入数组
while(number1!=0){
number1=number1/10;
count++;
}
int[] arr=new int[count];
int index= arr.length-1;
while (temp1!=0){
int ge=temp1%10;
temp1=temp1/10;
arr[index]=ge;
index--;
}
//以下是加密过程
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[i];
arr[i]=arr[j];
arr[j]=temp;
}
int number=0;
for (int i = 0; i < arr.length; i++) {
number=number*10+arr[i];
}
System.out.println(number);
}
}
//加密结果8346
7.数字解密
public class Test1 {
public static void main(String[] args) {
int number1=8346;
int temp1=number1;
int count=0;
//将数字分别写入数组
while(number1!=0){
number1=number1/10;
count++;
}
int[] arr=new int[count];
int index= arr.length-1;
while (temp1!=0){
int ge=temp1%10;
temp1=temp1/10;
arr[index]=ge;
index--;
}
//解密过程
for (int i = 0, j= arr.length-1; i < j; i++,j--) {
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
//此步骤加密是通过取余得到,解密就是0~4,需要+10,5~9不变
for (int i = 0; i < arr.length; i++) {
if(arr[i]>=0&&arr[i]<=4){
arr[i]=arr[i]+10;
}
}
//拼接结果
int number=0;
for (int i = 0; i < arr.length; i++) {
arr[i]=arr[i]-5;
number=number*10+arr[i];
}
System.out.print(number);
}
}
8.抢红包
- 一个大V直播抽奖。奖品是现金红包,分别有{2,588,888,1000,10000}五个奖金。请用代码模拟抽奖,打印出每个奖项,奖项的出现顺序要随机且不重复。
第一种:
import java.util.Random;
public class Test1 {
public static void main(String[] args) {
int[] arr = {2, 588, 888, 1000, 10000};
int[] arrNew = new int[arr.length];
Random r=new Random();
//有5种奖金,所以抽5次
for (int i = 0; i < 5; ) {
int randomIndex= r.nextInt(arr.length);
int price=arr[randomIndex];
boolean flag=contains(arrNew,price);
//当方法contains返回false,说明arrNew里不存在抽取的奖金数,所以将其添加进去
if(!flag){
arrNew[i]=price;
i++;
}
}
//打印结果
for (int i = 0; i < arrNew.length; i++) {
System.out.println(arrNew[i]);
}
}
//判断抽到的奖金数,是否存在于arrNew数组
public static boolean contains(int[] arrNew, int price) {
for (int i = 0; i < arrNew.length; i++) {
if(arrNew[i]==price){
return true;
}
}
return false;
}
}
第二种:
import java.util.Random;
public class Test1 {
public static void main(String[] args) {
int[] arr = {2, 588, 888, 1000, 10000};
Random r=new Random();
for (int i = 0; i < arr.length; i++) {
int randomIndex=r.nextInt(arr.length);
int temp=arr[i];
arr[i]=arr[randomIndex];
arr[randomIndex]=temp;
}
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
9.模拟双色球
- 投注号码由六个红球,一个蓝球号码组成。红球号码从1-33中选择,蓝球号码从1-16中选择。
import java.util.Random;
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
//生成中奖号码
int arrCreate[]=createNumber();
//用户输入号码
int arrUser[]=userInput();
//校验号码
int redcount=0;
int bluecount=0;
//校验红球个数
for (int i = 0; i < arrCreate.length-1; i++) {
for (int i1 = 0; i1 < arrUser.length-1; i1++) {
if(arrCreate[i]==arrUser[i1]){
redcount++;
//如果找到了,后面的数字就没必要比较了,跳出这一层循环
break;
}
}
}
//校验蓝球个数,并输出红球和蓝球正确个数
if(arrCreate[arrCreate.length-1]==arrUser[arrUser.length-1]){
bluecount++;
}
System.out.println("红球中奖"+redcount+"个");
System.out.println("蓝球中奖"+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){
System.out.println("三等奖,3000元");
}
else if(redcount==5&&bluecount==0||redcount==4&&bluecount==1){
System.out.println("四等奖,200元");
}
else if(redcount==4&&bluecount==0||redcount==3&&bluecount==1){
System.out.println("五等奖,10元");
}
else if(redcount==2&&bluecount==0||redcount==1&&bluecount==1||redcount==0&&bluecount==1){
System.out.println("六等奖,5元");
}
else {
System.out.println("谢谢参与");
}
}
//----------------------------------------------------------------------------
public static int[] userInput(){
int[]arr=new int[7];
Scanner sc=new Scanner(System.in);
for (int i = 0; i <arr.length-2 ; ) {
System.out.print("请输入第"+(i+1)+"个红球号码:");
//输入号码后进行判断,数字范围是否正常,数字是否在数组中重复(调用contains)。
int redNumber=sc.nextInt();
if(redNumber>=1&&redNumber<=33){
boolean flag=contains(arr,redNumber);
if(!flag){
arr[i]=redNumber;
i++;
}
else {
System.out.println("数字重复");
}
}
else {
System.out.println("红球数字范围出错");
}
}
while (true){
System.out.print("请输入蓝球号码:");
int blueNumber=sc.nextInt();
if(blueNumber>=1&&blueNumber<=16){
arr[arr.length-1]=blueNumber;
break;
}
else {
System.out.println("蓝球数字范围出错");
}
}
return arr;
}
public static int[] createNumber(){
int[]arr=new int[7];
Random r=new Random();
for (int i = 0; i < arr.length-1; ) {
int redNumber=r.nextInt(33)+1;
boolean flag=contains(arr,redNumber);
if(!flag){
arr[i]=redNumber;
i++;
}
}
arr[6]=r.nextInt(16)+1;
return arr;
}
public static boolean contains(int[]arr,int redNumber){
for (int i = 0; i < arr.length; i++) {
if(arr[i]==redNumber){
return true;
}
}
return false;
}
}
10.二维数组
二维数组:数组中存数组 (数据分组管理)
练习: 二维数组练习
public class Test1 {
public static void main(String[] args) {
int[][] arr = {
{22, 66, 44},
{77, 33, 88},
{25, 45, 65},
{11, 66, 99},
};
int sum = 0;
for (int i = 0; i < arr.length; i++) {
int sumQuarter = 0;
for (int j = 0; j < arr[i].length; j++) {
sumQuarter = sumQuarter + arr[i][j];
}
System.out.println("第" + (i + 1) + "季度总营业额为:" + sumQuarter);
sum = sum + sumQuarter;
}
System.out.println("全年总营业额为:" + sum);
}
}