it技术日新月异,多年从事前端开发的程序员怎么突破瓶颈?
让知识更具多元化显得非常重要,工作间之余多学一门技术,工作到老学到老,是一种人生态度!今天通过几个小案例巩固今日所学。
1,随机验证码
使用Java基本的逻辑和方法生成所需要的5位随机验证码,且生成的验证码包含大小写字母和数字。
首先导入java.util.Random类中实现的随机算法 import java.util.Random;
import java.util.Random;
public class CASE1 {
public static void main(String[] args) {
//5位随机验证码
System.out.println( createCode(5));
}
public static String createCode(int n){
Random r=new Random();
String code="";
for (int i = 0; i <n ; i++) {
int type=r.nextInt(3); //0到3随机 0 1 2
switch (type){
case 0:
// 随机一个数字字符
code+=r.nextInt(10);
break;
case 1:
// 随机一个大写字符A 65,Z 65+25
char chh1=(char)(r.nextInt(26)+65);
code+=chh1;
break;
case 2:
// 随机一个小写字符a 97,Z 97+25
char chh2=(char)(r.nextInt(26)+97);
code+=chh2;
break;
}
}
return code;
}
}
2,求平均分
我们需要实现一个程序来模拟6评委打分,去掉最高分和最低分后求平均分。
解题思路:
创建一个长度为6的数组,用于存储6个人的分数。
使用循环依次通过Scanner 录入6个分数,并将其存储在数组中。
遍历数组以找到找出最大值最小值,总值。
计算平均分。(sum-max-min)/(number-2) 得到的数是一个int类型的数字,给它乘以 1.0 转换为一个小数类型的
最后打印输出平均分的结果。
完整代码如下:
import java.util.Scanner;
public class case2
{
public static void main(String[] args) {
//6个数去掉最高分最低分后,求平均分
System.out.println(getAvrge(6));
}
public static double getAvrge(int number){
Scanner sc= new Scanner(System.in);
int[] scors = new int[number]; //6个0的数组
//存入评委分数
for (int i = 0; i < scors.length; i++) {
System.out.println("请输入第"+(i+1)+"位评委的分数:");
int score= sc.nextInt();
scors[i]=score;
}
//找出最大值最小值,总值
int sum=0;
int max=scors[0];
int min=scors[0];
for (int i = 0; i <scors.length ; i++) {
int score=scors[i];
sum+=score;
if(score>max){
max=score;
}
if(score<min){
min=score;
}
}
return 1.0*(sum-max-min)/(number-2);
}
}
3,加密数字
思路:加密一个四位数,先拆分这个四位数,再每位数加2,取余,最后反转。
拆分和反转分别独立一个方法
public class case3 {
public static void main(String[] args) {
System.out.println("加密后的结果是"+mi(1983));
}
public static String mi(int number){
// 1 拆分
int[] numbers= split(number);
//2 加5,对10取余
for (int i = 0; i <numbers.length ; i++) {
numbers[i]=(numbers[i]+5)%10;
}
//3反转
reverse(numbers);
//4 拼接后返回
String data="";
for (int i = 0; i < numbers.length; i++) {
data+=numbers[i];
}
return data;
}
//拆分方法
public static int[] split(int number) {
int[] numbers= new int[4]; //4位密码
//1983
numbers[0]=number/1000;
numbers[1]=(number/100)%10;
numbers[2]=(number/10)%10;
numbers[3]=number%10;
return numbers;
}
//反转方法
public static int[] reverse(int[] numbers) {
//[4,5,7,8]
// i j
for (int i = 0, j= numbers.length-1;i <j;i++,j--) {
int temp = numbers[j];
numbers[j]=numbers[i];
numbers[i]=temp;
}
return null;
}
}
4,拷贝数组
通常有认为直接赋值拷贝不行吗?答案是不行的。因为数组是一个引用类型,直接赋值拷贝 int[] arr2= arr 并没有拷贝一个新数组,而只是把他的地址拷贝给arr2,指向的还是同一个数组。
以下是拷贝一个一样的新数组代码。
public class case4
{
//拷贝数组
public static void main(String[] args) {
int[] arr={11, 22, 33};
int[] arr2= copy(arr);
System.out.println(arr2[0]);
System.out.println(arr2[2]);
}
public static int[] copy(int[] arr){
int[] newArr = new int[arr.length];
for (int i = 0; i < arr.length; i++) {
newArr[i] = arr[i];
}
return newArr;
}
}
通过上边的编码学习,不仅get了新知识,还对前端的javascript基础也有了新的认识。