目录
评委打分
需求:
记录评委打分:
int[] score=new int[6]; Scanner sc=new Scanner(System.in); for (int i = 0; i < score.length;) { System.out.print("请评委打分:"); int fen=sc.nextInt(); if (fen>100||fen<0){ System.out.println("分数不合法,请重新输入:"); continue; }else { score[i]=fen; i++; } }
求数组最大值:
public static int max(int[] a){ //记录最大值 int tey=a[0]; for (int i = 0; i < a.length; i++) { if (tey<a[i]){ tey=a[i]; } } return tey; }
求数组最小值:
public static int min(int[] a){ //记录最小值 int tey=a[0]; for (int i = 0; i < a.length; i++) { if (tey>a[i]){ tey=a[i]; } } return tey; }
在最后求4位评委的平均分的时候,不用去掉数组的最大值,最小值,直接总和减掉最大最小,求平均分。
最终代码为:
//6个评委打分,求掉最高分,最低分,求另外4个的平均分.
public static void main(String[] args) {
//定义一个动态数组记录分数
int[] score=new int[6];
Scanner sc=new Scanner(System.in);
for (int i = 0; i < score.length;) {
System.out.print("请评委打分:");
int fen=sc.nextInt();
if (fen>100||fen<0){
System.out.println("分数不合法,请重新输入:");
continue;
}else {
score[i]=fen;
i++;
}
}
//求最后的分数,(总分-max-min)/4为最后的得分
int new_score=count(score)-max(score)-min(score);
System.out.println("选手最后的得分为:"+new_score/4);
}
//定义一个方法查找数组的max
public static int max(int[] a){
//记录最大值
int tey=a[0];
for (int i = 0; i < a.length; i++) {
if (tey<a[i]){
tey=a[i];
}
}
return tey;
}
//找最小值的方法
public static int min(int[] a){
//记录最小值
int tey=a[0];
for (int i = 0; i < a.length; i++) {
if (tey>a[i]){
tey=a[i];
}
}
return tey;
}
//对数组求和
public static int count(int[] num){
//记录求和
int add=0;
for (int i = 0; i < num.length; i++) {
add+=num[i];
}
return add;
}
数字加密
需求:
- 某系统的数字密码(大于0),比如1983,采用加密方式进行传输.
- 规制如下:
- 先得到每位数,然后每位数加上5,在对10取余,最后将所有数字反转,得到一串新数。
例如:1983加密的结果为8346.
难点:
1.循环获取个位数字。
while (num!=0){ //从右往左获取每一位数字 int ge=num%10; //更新个位的值 num/=10;
2.数字反转拼接
//反转拼接 sum=sum*10+new_ge;
完整代码:
public static void main(String[] args) {
//键盘录入要加密的数字
Scanner sc=new Scanner(System.in);
System.out.print("请输入您要加密的数字:");
int num= sc.nextInt();
//定义拼接的变量
int sum=0;
//获取每一个数字
while (num!=0){
//从右往左获取每一位数字
int ge=num%10;
//更新个位的值
num/=10;
//加密
int new_ge=(ge+5)%10;
//反转拼接
sum=sum*10+new_ge;
}
System.out.println("加密后的数字是:"+sum);
}
数字解密
需求:
- 对上面进行加密的数字进行还原。
分析:在上题数字加密中在最后的结果直接进行了拼接反转,那么可以以同样的方法进行还原,主要的难点在于对10取余后还原。
- 在0-9加5后最大的数字范围是5-14所以在5-10取余值是5-9和0,11-14的取余范围是1-4.
- 那么数字如果在0-4,那么取余前的数字为10-14,在5-9取余前的数字为5-9.
主要代码:
//从右往左获取个位数字 int ge = num%10; //记录更新后的数字 num/=10; if(ge>=0&&ge<=4){ ge+=10; ge-=5; }else { ge-=5; }
完整代码:
public static void main(String[] args) {
//键盘获取要进行解密的数字
Scanner sc=new Scanner(System.in);
System.out.println("请输入你要进行解密的数字:");
int num= sc.nextInt();
//记录要进行反转拼接的数字
int sum=0;
//获取个位数字
while (num!=0){
//从右往左获取个位数字
int ge = num%10;
//记录更新后的数字
num/=10;
if(ge>=0&&ge<=4){
ge+=10;
ge-=5;
}else {
ge-=5;
}
//数字反转拼接
sum=sum*10+ge;
}
System.out.println("解密后的数字为:"+sum);
}