第二题:分析以下需求并实现
(1)定义方法public static boolean isSym(int[] arr),判断数组中的元素值是否对称,对称返回true,不对称返回false;
(2)在main方法中,定义一个数组,并调用方法。
(3)打印结果:[1,2,3,4,3,2,1]是否对称:true
public class Test1 {
public static void main(String[] args) {
int[] arr = {
1, 2, 3, 4, 3, 2, 1};
//打印数组
printArr(arr);
// 调用方法验证数组是否对称
boolean duicheng = isSym(arr);
System.out.println("是否对称:" + duicheng);
}
//验证数组是否对称
public static boolean isSym(int[] arr) {
for (int start = 0, end = arr.length - 1; start <= end; start++, end--) {
if (arr[start] != arr[end]) {
//只要有不相等的 就是不对称
return false;
}
}
//for循环结束以后 要是没有不相等的 那就是对称的
return true;
}
//打印数组
public static void printArr(int[] arr) {
System.out.print("[");
for (int i = 0; i < arr.length; i++) {
if (i == arr.length - 1) {
System.out.print(arr[i]);
} else {
System.out.print(arr[i] + ",");
}
}
System.out.print("]");
}
}
第三题:分析以下需求并实现
(1)定义一个长度为6的int类型数组,元素值使用随机数生成(范围为50-80)
(2)求出该数组中满足要求的元素和。
要求:求和的元素的个位和十位不能包含7,并且只能为偶数。
public class Test2 {
public static void main(String[] args) {
//动态生成数组
int[] arr = new int[6];
//创建随机数对象
Random r = new Random();
//调用方法 使用随机数把生成的随机数加入到数组中
addArr(r, arr);
//调用方法,求满足要求的元素的和
int sum = sum_arr(arr);
System.out.println("该数组中满足要求的元素的和为:" + sum);
}
public static void addArr(Random r, int[] arr) {
for (int i = 0; i < arr.length; i++) {
arr[i] = r.nextInt(31) + 50;
// System.out.println(arr[i]);
}
}
public static int sum_arr(int[] arr) {
int sum = 0;
for (int i = 0; i < arr.length; i++) {
int ge = arr[i] % 10;
int shi = arr[i] / 10;
if (ge != 7 && shi != 7 && arr[i] % 2 == 0) {
//如果满足条件 就计算sum
sum += arr[i];
} else {
//如果不满足,那就直接跳过本次循环,进行下一次循环
continue;
}
}
//最终把sum返回
return sum;
}
}
/第四题:分析以下需求并实现
(1) 定义方法public static int getCount(int[] arr,int num),求出指定元素在数组中出现的次数.
(2)定义方法public static int getAllCount(int[] arr),统计数组中出现次数为1的元素一共有多少个。
(推荐-遍历数组,然后调用第一个方法,求出数组中每个元素在数组中出现的次数,如果只出现了一次,就统计)
(3) 在main方法中定义数组,如int arr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};。然后调用getAllCount方法,统计只出现一次的元素有多少个。
打印结果:数组中只出现一次的元素有2个/
public class Test3 {
public static void main(String[] args) {
int arr[] = {
1, 3, 4, 5, 0, 0, 6, 6, 0, 5, 4, 7, 6, 7, 0, 5};
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个数字用来查询:");
int num = sc.nextInt();
int cout = getCount(arr, num);
System.out.println(num + "在arr数组中出现了" + cout + "次");
int count_all = getAllCount(arr);
// System.out.printf("数组中只出现一次的元素有%d个", count_all);
//这两个打印效果一样,上面是格式化打印,作为了解
System.out.println("数组中只出现一次的元素有" + count_all + "个");
}
public static int getCount(int[] arr, int num) {
int count = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[i] == num) {
//每次满足相等 就计数一次
count++;
}
}
return count;
}
public static int getAllCount(int[] arr) {
//定义变量,用来记录只出现过一次的元素的数量
int count_all = 0;
for (int i = 0; i < arr.length; i++) {
//调用getCount方法,依次确认每个元素出现的次数
int count = getCount(arr, arr[i]);
//判断如果只出现一次,那就计数
if (count == 1) {
count_all++;
} else {
//如果不是出现一次,那就直接跳过本次循环
continue;
}
}
//返回只出现过一次的元素的数量
return count_all;
}
}