1、设计一个方法,找出一个数组中最大的数字,连同所在的下标一起输出
public static int theMaxnumber(int[] arry) {
int numax = arry[0];
int temp = 0;
for (int i = 1; i <= arry.length - 1; i++) {
if (numax < arry[i]) {
numax = arry[i];
temp = i;
}
}
System.out.println(" 最大的数字为: " + numax);
System.out.println(" 其下标为: " + temp);
return temp;
}
2、设计一个方法,判断一个数组是不是一个升序的数组
public static boolean checkTheArrayUp(int[] arry) {
for (int i = 0; i <= arry.length - 2; i++) {
if (arry[i] > arry[i + 1]) {
System.out.println("NO");
return false;
}
}
System.out.println("YES");
return true;
}
3、设计一个方法,找出一个整型数组中的第二大的值。 **
1、不可以通过排序实现,不能修改数组中的数据顺序
2、要考虑到最大的数字可能出现多次
public static int findTheSecondMaxNumber(int[] arry) {
/*
* 思路:
* 首先 如果数组中有比第一大的数字还要大,那么第一大的数字则变成第二大;
* 如果数组中某个数比第一大小,第二大大 那么它就是第二大
*/
int max = arry[0];
int second = arry[0];
int temp = 0;
for (int i = 1; i <= arry.length - 1; i++) {
if (arry[i] > max) {
second = max;
max = arry[i];
temp = i;
}
else if (arry[i] > second && arry[i] < max) {
second = arry[i];
temp = i;
}
}
System.out.println(second);
System.out.println(temp);
return temp;
}
4、设计一个方法,将一个数组中的元素倒序排列(注意,不是降序)
public static int[] turnDownTheArray(int[] arry) {
int l = arry.length;
int[] res = new int[l];
for (int i = 0; i <= l - 1; i++) {
res[l - i - 1] = arry[i];
}
for (int ele : res)
System.out.print(ele);
return res;
}
5、将一个数组中的元素拷贝到另外一个数组中
public static int[] copyTheArray(int[] arry) {
int l = arry.length;
int[] res = new int[l];
for (int i = 0; i <= l - 1; i++) {
res[i] = arry[i];
}
for (int ele : res)
System.out.print(ele);
return res;
}
6、设计一个方法,比较两个数组中的元素是否相同(数量、每一个元素都相同,才认为是相同的数组)
public static boolean compareTheArray(int[] a1, int[] a2) {
if (a1.length != a2.length) {
System.out.println("NO");
return false;
}
for (int i = 0; i < a1.length; i++)
if (a1[i] != a2[i]) {
System.out.println("NO");
return false;
}
System.out.println("YES");
return true;
}
7、尝试使用递归计算一个数组中的元素和 **
public static int sumOfTheArary(int[] a, int i) {
int len = a.length - 1;
if (i == len)
return a[i];
else
return a[i] + sumOfTheArray(a, i + 1);
}
8、小明参加歌手比赛,评委组给出10个成绩,去掉一个最高分,去掉一个最低分,求平均分
/**
* 求数组中最大的那个数字
* @param arry
* @return 最大数的下标
*/
public static int theMaxNumber(int[] arry) {
int numax = arry[0];
int temp = 0;
for (int i = 1; i <= arry.length - 1; i++) {
if (numax < arry[i]) {
numax = arry[i];
temp = i;
}
}
System.out.println(" 最大的数字为: " + numax);
System.out.println(" 其下标为: " + temp);
return temp;
}
/**
* 求数组中最小的数
* @param arry
* @return 最小数的下标
*/
public static int theMinNumber(int[] arry) {
int numin = arry[0];
int temp = 0;
for (int i = 1; i <= arry.length - 1; i++) {
if (numin > arry[i]) {
numin = arry[i];
temp = i;
}
}
System.out.println(" 最小的数字为: " + numin);
System.out.println(" 其下标为: " + temp);
return temp;
}
/**
* 求数组和
* @param a
* @return 返回和
*/
public static int plusArray(int[] a) {
int sum = 0;
for (int i = 1; i <= a.length - 1; i++) {
sum += a[i];
}
return sum;
}
/**
* 求去掉最大、最小数的平均值
* @param a
* @return
*/
public static int averageSing(int[] a) {
int nmax = a[0];
int nmin = a[0];
int temp1 = 0;
int temp2 = 0;
temp1 = theMaxNumber(a);
temp2 = theMinNumber(a);
a[temp1] = 0;
a[temp2] = 0;
System.out.println(plusArray(a) / (a.length - 2));
return plusArray(a) / (a.length - 2);
}
9、设计一个方法,将一个字符串中的大小写字母翻转。帮助代码如下:
// 将一个字符串分解为一个字符数组 { 'h', 'e', 'l', 'l', 'o' }
char[] array = "hello".toCharArray();
// 将一个字符数组转成一个字符串
String str = new String(array);
/**
* 将字母大小写互相转换
* @param c1
* @return
*/
public static char smallToBig(char c1) {
if(c1 >= 'a' && c1 <= 'z')
return c1 -= 32;
else if(c1 >= 'A' && c1 <= 'Z')
return c1 += 32;
else
return (char) -1;
}
/**
* 将字符串中的大小写字母反转,并输出和返回
* @param a
*/
public static String transABC(String a) {
char[] array = a.toCharArray();
for(int i = 0 ; i < array.length;i++) {
array[i] = smallToBig(array[i]);
}
String str = new String(array);
System.out.println(str);
return str;
}
10、模拟生成一注随机的双色球。
双色球规则:
1、一注双色球由6和红球和1个蓝球组成。
2、红球的范围是[1, 33],蓝球的范围是[1, 16]。
3、红球不允许重复,且是升序排序的。
4、最终输出结果格式如: 红球:1,2,3,4,5 蓝球:6
5、超纲知识点:随机数
// 1、使用随机数,需要在文件的上方,package的下面,类的上面,添加一句话 import java.util.*;
// 2、随机数的使用方法
Random random = new Random();
random.nextInt(n); // 生成一个 [0, n) 的随机数,并返回
/**
* 进行冒泡排序
* @param array
* @return 返回排序后的数组
*/
public static int[] booLine(int[] array) {
for (int i = 0; i < array.length - 1; i++) {
for (int j = 0; j < array.length - i - 1; j++) {
if (array[j] > array[j + 1]) {
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
return array;
}
/**
* 检查数组中是否有重复的值
* @param array
* @return 有:返回true 无: 返回false
*/
public static boolean haveRepeat(int[] array) {
for (int i = 0; i < array.length - 1; i++) {
for (int j = 0; j < array.length - i - 1; j++) {
if (array[j] == array[j + 1]) {
return true;
}
}
}
return false;
}
/**
* 创建无重复,无0的 不重复的随机数到数组中
* @param n m n代表个数 m代表最大值(不可取到的)
* @return 返回生成的数组
*/
public static int[] creatBall(int n,int m) {
int[] ball = new int[n];
if (n == 1) {
Random random = new Random();
while (ball[0] == 0)
ball[0] = random.nextInt(m);
}
else {
while (haveRepeat(ball)) {
for (int i = 0; i <= n - 1; i++) {
Random random = new Random();
while (ball[i] == 0)
ball[i] = random.nextInt(m);
}
}
}
return ball;
}
/**
* 打印数组
* @param array
*/
public static void printArray(int[] array) {
for(int i = 0;i<array.length;i++) {
System.out.print(array[i]);
if(i < array.length - 1)
System.out.print(", ");
else
System.out.print(" ");
}
}
/**
* 生成双色球
*/
public static void doubleColorBall() {
int[] red = creatBall(6,34);
int[] blue = creatBall(1,17);
red = booLine(red);
System.out.print("红球: ");
printArray(red);
System.out.print("蓝球: ");
printArray(blue);
System.out.println();
}