数组的使用

从键盘读入学生成绩,找出最高分,并输出学生成绩等级。

  • 成绩>=最高分-10 等级为’A’
  • 成绩>=最高分-20 等级为’B’
  • 成绩>=最高分-30 等级为’C’
  • 其余 等级为’D’

提示:先读入学生人数,根据人数创建int数组,
存放学生成绩。
数组的使用_第1张图片

    public static void main(String[] args) {
        System.out.printf("请输入学生人数:");
        Scanner scanner = new Scanner(System.in);

        int num = scanner.nextInt();
        System.out.println("请输入" + num + "成绩");
        int max = 0;
        int []scores = new int[num];
        for (int i = 0; i < num; i++){
            int score = scanner.nextInt();
            if (score > max){
                max = score;
            }

            scores[i] = score;
        }
        System.out.println("最高分是:" + max);

        for (int i = 0; i < num; i++){
            String grade = "";
            int thescore = scores[i];
            if (thescore >= max - 10){
                grade = "A";
            }else if (thescore >= max - 20){
                grade = "B";
            }else if (thescore >=  max - 30){
                grade = "C";
            }else{
                grade = "D";
            }
            System.out.println("student " + i + " score is " + scores[i] + " grade is " + grade);
        }
    }

使用简单数组【注意赋值与复制的不同】

(1)创建一个名为ArrayTest的类,在main()方法中声明array1和array2两个变量,
他们是int[]类型的数组。
(2)使用大括号{},把array1初始化为8个素数:2,3,5,7,11,13,17,19。
(3)显示array1的内容。
(4)赋值array2变量等于array1,修改array2中的偶索引元素,使其等于索引值
(如array[0]=0,array[2]=2)。打印出array1。
数组的使用_第2张图片
思考:array1和array2是什么关系?
它们里面存储的地址是一样的,都指向堆空间的同一个空间

拓展:修改题目,实现array2对array1数组的复制
数组的使用_第3张图片

数组的反转

 public static void main(String[] args) {
        int[] array1 = new int[]{2, 3, 5, 7, 11, 13, 17, 19};

        // 数组的反转
        // 6 / 2 = 3  ---》 0_5,1_4,2_3
        // 7 / 2 = 3 ----》 0_6,1_5,2_4,3无须交换
        for (int i = 0; i < array1.length / 2; i++){
            int temp = array1[i];
            array1[i] = array1[array1.length - 1 - i];
            array1[array1.length - 1 - i] = temp;
        }

        for (int i : array1){
            System.out.print(i + "\t");
        }
    }
 public static void main(String[] args) {
        int[] array1 = new int[]{2, 3, 5, 7, 11, 13, 17, 19};

        // 数组的反转
        for (int i = 0, j = array1.length - 1; i < j; i++, j--){
            int temp = array1[i];
            array1[i] = array1[j];
            array1[j] = temp;
        }

        for (int i : array1){
            System.out.print(i + "\t");
        }
    }

杨辉三角

  1. 第一行有 1 个元素, 第 n 行有 n 个元素
  2. 每一行的第一个元素和最后一个元素都是 1
  3. 从第三行开始, 对于非第一个元素和最后一个元
    素的元素。即:
    yanghui[i][j] = yanghui[i-1][j-1] + yanghui[i-1][j];
    数组的使用_第4张图片
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入行数:");
        int length = scanner.nextInt();

        int [][] arr = new int[length][];
        for (int i = 0; i < arr.length; i++){
            arr[i] = new int[i+1];
            for (int j = 0; j < arr[i].length; j++){
                if (j == 0 || i == j){
                    arr[i][j] = 1;
                }else{
                    arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
                }
                System.out.print(arr[i][j] + "\t");
            }
            System.out.println();
        }
    }

创建一个长度为6的int型数组,要求数组元素的值都在1-30之间,且是随机赋值。同时,要求元素的值各不相同。

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入行数:");
        int length = scanner.nextInt();

        Set VSet = new HashSet<>();
        int []arr = new int[length];
        for (int i = 0; i < arr.length; i++){
            while (true){
                int rand = (int)(Math.random()*(30-1)+1); //[0.0, 1.0)*29--->[0,29)+1--->[1,30) --->
                boolean b = VSet.add(rand);
                if (b == true){
                    arr[i] = rand;
                    System.out.print(rand + "\t");
                    break;
                }
            }
        }
    }

定义一个int型的一维数组,包含10个元素,分别赋一些随机整数,

然后求出所有元素的最大值,最小值,和值,平均值,并输出出来。
要求:所有随机数都是两位数。
提示;
[0,1) * 90 [0,90) + 10  [10,100) [10,99]
(int)(Math.random() * 90 + 10)

    public static void main(String[] args) {
        int [] arr = new int[10];
        // 赋值
        for (int i = 0; i < arr.length; i++){ // [0, 1)*90 = [0,90) + 10 --->[10,100)
            arr[i]= (int) (Math.random() *(100-10) + 10); // 10-100

        }


        int max = arr[0]; // 注意他们的初始值,这个很容易错
        int min = arr[0]; // 如果初始值不为arr的第一个数,那么它们的值为0,那就错了
        int sum = arr[0];
        for (int i = 1; i < arr.length; i++){

            if (arr[i] > max){
                max = arr[i];
            }

            if (arr[i]  < min){
                min = arr[i];
            }
            sum = sum + arr[i];
            System.out.print(arr[i] + " ");
        }
        System.out.println();
        // arr.length 一定不为0;
        int avg = 0;
        avg = sum / arr.length;

        System.out.println("最大值: " + max);
        System.out.println("最小值: " + min);
        System.out.println("和: " + sum);
        System.out.println("均值: " + avg);
    }

获取arr数组中所有元素的和

数组的使用_第5张图片

    public static void main(String[] args) {
        int[][]arr= new int[][]{{3,5,8},{12,9},{7,0,6,4}};

        int sum = 0;
        for(int i = 0; i < arr.length; i++){
            for (int j = 0; j < arr[i].length; j++){
                sum = sum + arr[i][j];
            }
        }
        System.out.println("" + sum + "");

    }

不值一题

下面程序的运行结果

public class ArrayTest {
  public static void main(String[] args) {
	 int[] arr = new int[]{8,2,1,0,3};
	 int[] index = new int[]{2,0,3,2,4,0,1,3,2,3,3};
     String tel = "";
     for(int i = 0;i < index.length;i++){
           tel += arr[index[i]];
      } 
       System.out.println("联系方式:" + tel);
 } 
}

// 18013820100

你可能感兴趣的:(#,-----,java练习)