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.println("输入机票原价");
double ticket = sc.nextDouble();
System.out.println("输入月份(1-12)");
int month = sc.nextInt();
if(month<1||month>12){
System.out.println("月份非法");
return;
}
System.out.println("输入舱位级别(头等舱:1,经济舱:2)");
int rank = sc.nextInt();
if(rank !=1&&rank!=2){
System.out.println("舱位非法");
return;
}
//ctrl+alt+M 自动抽取方法
if(month>=5&&month<=10){
cal_ticket(ticket,rank,0.9,0.85);
}else{
cal_ticket(ticket,rank,0.7,0.65);
}
}
public static void cal_ticket(double ticket,int rank,double v1,double v2){
if(rank == 1){
System.out.println("头等舱价格为:"+ticket*v1);
}else{
System.out.println("经济舱价格为:"+ticket*v2);
}
}
}
2.质数
需求:
判断101-200之间有多少个质数,并输出所有质数
思路:
运用双重循环对每一个数字进行判断并设置标志位记录
public class Test2 {
public static void main(String[] args) {
int count = 0;
for (int i = 101; i <= 200; i++) {
//flag记录该循环数字是否是质数,默认0是质数
int flag = 0;
for(int j = 2;j<i/2;j++){
if(i%j==0){
flag = 1;
//
break;
}
}
if(flag==0){
count++;
System.out.print(i+" ");
}
}
System.out.println();
System.out.println("总数是"+count);
}
}
3.开发验证码
需求:
定义方法实现随机产生一个5位的验证码
验证码格式:长度为5;前四位是大写字母或者小写字母;最后一位是数字
思路:
首先先存储出需要的字母和数字 然后定义一个字符串,首先通过随机索引拼接四个字母,再拼接一个数字
import java.util.Random;
public class Test3 {
public static void main(String[] args) {
//在以后如果我们要在一堆没有什么规律的数据中随机抽取
//可以先把这些数据放到数组当中
//再随机抽取一个索引
char[] alp = new char[52];
for (int i = 0; i < alp.length; i++) {
if(i<=25){
alp[i]=(char)(97+i);
}else{
alp[i]=(char)(65+i-26);
}
}
int[] arr = {1,2,3,4,5,6,7,8,9,0};
Random r = new Random();
String result = "";
for (int i = 0; i < 4; i++) {
int index = r.nextInt(alp.length);
result = result+alp[index];
}
int index1 = r.nextInt(arr.length);
result = result+index1;
System.out.println(result);
}
}
4.数组元素的复制
需求:
把一个数组中的元素复制到另一个新数组中去
思路: 定义新数组复制即可
public class Test4 {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5};
int[] brr = new int[arr.length];
for (int i = 0; i < brr.length; i++) {
brr[i] = arr[i];
}
for (int i = 0; i < brr.length; i++) {
System.out.print(brr[i] + " ");
}
}
}
5.评委打分
需求:
在唱歌比赛中,有6名评委给选手打分,分数范围是[0-100]之间的整数。选手的最后得分为:去掉最高分、最低分后的4个评委的平均分,请完成上述过程并计算出选手的得分。
思路:
首先定义方法依次录入符合范围的评分 然后找出最大最小值进行计算即可
import java.util.Scanner;
public class Test5 {
public static void main(String[] args) {
int[] arr = getScores();
int max = getMax(arr);
int min = getMin(arr);
int sum = getSum(arr);
int avg = (sum-min-max)/(arr.length-2);
System.out.println(avg);
}
//定义数组
public static int[] getScores(){
int[] scores = new int[6];
Scanner sc = new Scanner(System.in);
for (int i = 0; i < scores.length; i++) {
System.out.println("请输入评委的打分:");
int score = sc.nextInt();
if(score>=0&&score<=100){
scores[i] = score;
}else{
System.out.println("成绩超出范围,请重新录入,当前的i为:"+i);
i--;
}
}
return scores;
}
//求最大值
public static int getMax(int[] arr){
int max = arr[1];
for (int i = 0; i < arr.length; i++) {
if(arr[i]>max){
max = arr[i];
}
}
return max;
}
//求最小值
public static int getMin(int[] arr){
int min = arr[1]; //shift+f6 修改一个方法中的指定所有相同值
for (int i = 0; i < arr.length; i++) {
if(arr[i]<min){
min = arr[i];
}
}
return min;
}
//求总和
public static int getSum(int[] arr){
int sum = 0;
for (int i = 0; i < arr.length; i++) {
sum=sum+arr[i];
}
return sum;
}
}
6.数字加密和解密
需求:
某系统的数字密码(大于0),比如1983,采用加密方式进行传输。
规则如下:先得到每位数,然后每位数都加上5,再对10取余,最后将所有数字翻转,得到一串新数,解密相反。
思路:
首先将数字各位统计进数组 然后进行加密计算,再利用循环将其前后翻转
import java.util.Scanner;
public class Test6 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入密码:");
int code = sc.nextInt();
int result = encryption(code);
System.out.println("加密后的结果就是:"+result);
int result_decrypt = decrypt(result);
System.out.println("解密后的结果就是:"+result_decrypt);
}
//加密 分解与反转数组 +5 %10 反转
public static int encryption(int code){
int[] arr = getList(code);
//先加密再反转
for (int i = 0; i < arr.length; i++) {
arr[i] = (arr[i]+5)%10;
}
int[] brr = reversalList(arr);
int result = 0;
for (int i = 0; i < brr.length; i++) {
result = result*10+brr[i];
}
return result;
}
//解密 反转然后 x = (c - k) % 10
public static int decrypt(int result){
int[] arr = getList(result);
//先反转再加密
int[] brr = reversalList(arr);
for (int i = 0; i < brr.length; i++) {
brr[i] = (brr[i]-5+10)%10;
}
int result_decrypt = 0;
for (int i = 0; i < brr.length; i++) {
result_decrypt = result_decrypt*10+brr[i];
}
return result_decrypt;
}
//将输入数字分解为数组
public static int[] getList(int result){
int count = 0;
int temp = result;
while(temp>0){
temp = temp/10;
count++;
}
int[] arr = new int[count];
for (int i = arr.length-1; i >= 0; i--) {
arr[i] = result%10;
result = result/10;
}
return arr;
}
//反转数组
public static int[] reversalList(int[] arr){
int[] brr = new int[arr.length];
for (int i = 0; i < brr.length; i++) {
brr[i] = arr[arr.length-i-1];
}
return brr;
}
}
2842

被折叠的 条评论
为什么被折叠?



