目录
案例一 逢 7 跳过
需求:
朋友聚会的时候可能会玩一个游戏:逢七过。
规则是:从任意一个数字开始报数,当你要报的数字包含7或者是7的倍数时都要说:过。
为了帮助大家更好的玩这个游戏,这里我们直接在控制台打印出1-100之间的满足逢七必过规则的数据。
代码:
public class Feng7 {
//主方法,程序入口
public static void main(String[] args) {
feng7guo();
}
//方法的具体实现
public static void feng7guo(){
//for循环遍历1~100
for (int i = 1; i <= 100; i++) {
//拆分遍历的数的个位和十位
int ge = i%10;
int shi = i/10%10;
//进行判断,将满足条件的数打印出来
if (i % 7 == 0||ge==7||shi==7) {
System.out.println(i);
}
}
}
}
运行结果:
7 14 17 21 27 28 35 37 42 47 49 56 57 63 67 70 71 72 73 74 75 76 77 78 79 84 87 91 97 98
案例二 数组元素求和
需求:
有这样的一个数组,元素是 {68,27,95,88,171,996,51,210}
求出该数组中满足要求的元素和
要求是:求和的元素个位和十位都不能是7,并且只能是偶数
代码:
public static void main(String[] args) {
//定义数组并赋值
int[] arr = {68, 27, 95, 88, 171, 996, 51, 210};
System.out.println(arrSum(arr));
}
//方法的具体实现
public static int arrSum(int[] arr) {
//定义sum存储求和的值
int sum = 0;
//for循环遍历数组
for (int i = 0; i < arr.length; i++) {
//拆分元素的个位和十位
int ge = arr[i] % 10;
int shi = arr[i] / 10 % 10;
//满足条件的元素记录进sum
if (arr[i] % 2 == 0 && ge != 7 && shi != 7) {
sum += arr[i];
}
}
//返回sum
return sum;
}
运行结果:
1362
案例三 判断两个数组元素是否相同
需求:
需求:
定义一个方法,用于比较两个数组的内容是否相同
要求 : 长度, 内容, 顺序完全相同
代码:
public static void main(String[] args) {
//定义了几个用于测试的数组
int[] arr1 = {11, 22, 33};
int[] arr2 = {11, 22, 33};
int[] arr3 = {44, 55, 66};
int[] arr4 = {44, 55, 66, 77};
System.out.println(equalTwoArr(arr1, arr4));
}
//具体的方法,定义两个形参用于接收两个数组
public static boolean equalTwoArr(int[] arr1, int[] arr2) {
//逆向思考条件
if (arr1.length != arr2.length) {
return false;
} else {
for (int i = 0; i < arr1.length; i++) {
if (arr1[i] != arr2[i]) {
return false;
}
}
}
return true;
}
运行结果:
false
案例四 查找元素在数组中的索引
需求:
设计一个方法, 查找元素在数组中的索引位置
已知一个数组 arr = {19, 28, 37, 46, 50};
键盘录入一个数据,查找该数据在数组中的索引。
并在控制台输出找到的索引值。
如果没有查找到,则输出-1
代码:
//main,程序的入口
public static void main(String[] args) {
//创建Scanner对象,用于键盘输入
Scanner sc = new Scanner(System.in);
//定义问题所需数组
int[] arr = {19, 28, 37, 46, 50};
//定义num,接收用户输入的数
System.out.println("请输入一个数:");
int num = sc.nextInt();
//调用arrindex方法
System.out.println("该数据在数组的索引:"+ arrindex(arr, num));
}
//具体方法的实现,接收一个数组和要查找的数
private static int arrindex(int[] arr, int num) {
//遍历数组
for (int i = 0; i < arr.length; i++) {
//判断数组内的元素是否玉num相等
if (num == arr[i]) {
//相等就打印数组索引
return i;
}
}
//没找到,打印-1
return -1;
}
运行结果:
请输入一个数:
28
该数据在数组的索引:1
案例五 数组元素反转
需求:
已知一个数组 arr = {11, 22, 33, 44, 55}; 用程序实现把数组中的元素值交换,
交换后的数组 arr = {55, 44, 33, 22, 11}; 并在控制台输出交换后的数组元素。
代码:
public static void main(String[] args) {
//定义问题已知数组
int[] arr = {11, 22, 33, 44, 55,66};
System.out.println(Arrays.toString(arrEversal(arr)));
}
//具体方法实现
public static int[] arrEversal(int[] arr){
//循环控制交换的次数
for (int i = 0; i < arr.length/2; i++) {
int temp = arr[i];
arr[i] = arr[arr.length-1-i];
arr[arr.length-1-i] = temp;
}
return arr;
}
运行结果:
[66, 55, 44, 33, 22, 11]
案例六 评委打分
需求:
在编程竞赛中,有6个评委为参赛的选手打分,分数为0-100的整数分。
选手的最后得分为:去掉一个最高分和一个最低分后的4个评委平均值
代码:
public static void main(String[] args) {
int[] arr = new int[6];
System.out.println("选手的最后得分为:"+ judgeScore(arr));
}
public static int judgeScore(int[] arr){
Scanner sc = new Scanner(System.in);
//遍历数组
for (int i = 0; i < arr.length; i++) {
//录入数据
System.out.println("请输入第"+(i+1)+"个评委打分");
int score = sc.nextInt();
//输入正确录入数组,输入错误返回前一个循环
if (score>=0&&score<=100){
arr[i] = score;
}else {
System.out.println("你的输入有误!,请重新输入:");
i--;
}
}
int sum = getsum(arr);
int min = getmin(arr);
int max = getmax(arr);
return (sum-max-min)/(arr.length-2);
}
//求最大值
public static int getmax(int[] arr){
int max = arr[0];
for (int i = 1; i < arr.length; i++) {
if (arr[i]>max){
max = arr[i];
}
}
return max;
}
//求最小值
public static int getmin(int[] arr){
int min = arr[0];
for (int i = 1; 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 += arr[i];
}
return sum;
}
运行结果:
请输入第1个评委打分
1
请输入第2个评委打分
20
请输入第3个评委打分
20
请输入第4个评委打分
20
请输入第5个评委打分
20
请输入第6个评委打分
100
选手的最后得分为:20
案例七 随机产生验证码
需求:
请从26个英文字母(大小写都包含),以及数字0-9中,随机产生一个5位的字符串验证码并打印在控制台
效果:uYq8I,3r4Zj
代码:
public static void main(String[] args) {
String checkCode = getYanZhengMa();
System.out.println("生成的验证码为:" + checkCode);
}
private static String getYanZhengMa() {
char[] chs = {
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'
};
Random r = new Random();
String checkCode = "";
for (int i = 0; i < 5; i++) {
checkCode += chs[r.nextInt(chs.length)];
}
return checkCode;
}
运行结果:
生成的验证码为:LvDOt