W1D5作业题

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();
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值