遇一山,过一山,处处有风景;只要勇敢向前,一路尽是繁花盛开。 | (点击查看→)【测试干货】python/java自动化、持续集成、性能、测开、简历、笔试面试等

【参考答案】java基础练习:数组(一维、二维、传值传地址)

一维数组

定义一个int类型数组,动态赋值,然后将数组中元素反转,最后输出,要求:动态赋值定义方法;反转定义方法

package com.qzcsbj;

import java.util.Arrays;
import java.util.Scanner;

/**
 * @公众号 : 全栈测试笔记
 * @博客 : www.cnblogs.com/uncleyong
 * @微信 : ren168632201
 * @描述 : <>
 */
public class Test {
    public static void main(String[] args) {
        int[] nums = new int[3];
        setValue(nums);
        System.out.println("动态赋值后:" + Arrays.toString(nums));
        reverseArray(nums);
        System.out.println("数组反转后:" + Arrays.toString(nums));
    }

    public static void setValue(int[] nums){
        Scanner sc = new Scanner(System.in);
        for (int i=0;i<nums.length;i++){
            System.out.print("请输入数组第" + (i+1) +"个元素:");
            nums[i] = sc.nextInt();
        }
    }

    public static void reverseArray(int[] nums){
        int len = nums.length;
        for (int i=0;i<len/2;i++){
            int temp = nums[len-1-i];
            nums[len-1-i] = nums[i];
            nums[i] = temp;
        }
    }
}

 

 

有一个数组[1, 3, 66, 16, 28, 666, 168],循环输出数组中的元素并计算所有数的总和,并将最大值放到最前面,最小值放到最后面,然后输出数组

package com.qzcsbj;

import java.util.Arrays;
import java.util.Scanner;

/**
 * @公众号 : 全栈测试笔记
 * @博客 : www.cnblogs.com/uncleyong
 * @微信 : ren168632201
 * @描述 : <>
 */
public class Test {
    public static void main(String[] args) {
        int[] nums = {1, 3, 66, 16, 28, 666, 168};

        int sum = 0;
        for (int num : nums) {
            System.out.print(num + " ");
            sum += num;
        }
        System.out.println("\n总和:" + sum);

        int maxIndex = 0, minIndex = 0;
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] > nums[maxIndex]) {
                maxIndex = i;
            }
            if (nums[i] < nums[minIndex]) {
                minIndex = i;
            }
        }

        System.out.println("最大值的索引:" + maxIndex);
        System.out.println("最小值的索引:" + minIndex);

        if (maxIndex==nums.length && minIndex==0){
            int temp=nums[0];
            nums[0]=nums[maxIndex];
            nums[maxIndex]=temp;
            System.out.println(Arrays.toString(nums));
        } else if (maxIndex==nums.length){
            int temp=nums[0];
            nums[0]=nums[maxIndex];
            nums[maxIndex]=temp;

            temp=nums[nums.length-1];
            nums[nums.length-1]=nums[minIndex];
            nums[minIndex]=temp;
        } else if (minIndex==0){
            int temp=nums[nums.length-1];
            nums[nums.length-1]=nums[minIndex];
            nums[minIndex]=temp;


            temp=nums[0];
            nums[0]=nums[maxIndex];
            nums[maxIndex]=temp;

            int temp=nums[0];
            nums[0]=nums[maxIndex];
            nums[maxIndex]=temp;

            temp=nums[nums.length-1];
            nums[nums.length-1]=nums[minIndex];
            nums[minIndex]=temp;
        }
        System.out.println("交换后:" + Arrays.toString(nums));
    }
}

 

 

增强for

输出数组的值[1, 3, 66, 16, 28, 666, 168]

package com.qzcsbj;

import java.util.Arrays;
import java.util.Scanner;

/**
 * @公众号 : 全栈测试笔记
 * @博客 : www.cnblogs.com/uncleyong
 * @微信 : ren168632201
 * @描述 : <>
 */
public class Test {
    public static void main(String[] args) {
        int[] nums = {1, 3, 66, 16, 28, 666, 168};
        // 普通的for循环
        for (int i = 0; i < nums.length; i++) {
            System.out.println(nums[i]);
        }
        System.out.println();
        // 增强for循环
        for (int n : nums) {
            System.out.println(n);
        }
        System.out.println(Arrays.toString(nums)); 
    }
}

  

传值、传地址

下面输出结果是?

package com.qzcsbj;

import java.util.Arrays;
import java.util.Scanner;

/**
 * @公众号 : 全栈测试笔记
 * @博客 : www.cnblogs.com/uncleyong
 * @微信 : ren168632201
 * @描述 : <>
 */
public class Test {
    public static void main(String[] args) {
        int a = 5;
        int b = a; 
        b = 8;
        System.out.println(a);
        System.out.println(b);


        int[] c = { 1,2,3 };
        int[] d = c;
        d[0] = 666;
        System.out.println(Arrays.toString(c));
        System.out.println(Arrays.toString(d));

        change(a,c);
        System.out.println(a);
        System.out.println(Arrays.toString(c));

    }

    public static void change(int i, int[] array) {
        i = 666;
        array[array.length - 1] = 999;
        System.out.println(i);
        System.out.println(Arrays.toString(array));
    }
}

 

基本数据类型是传值

数组是传地址 

 

二维数组(含冒泡)

输出二维数组的每个元素,int[][] d = { { 1, 2, 9 }, { 5 }, { 1, 3 }, { 9, 7, 0 } };

package com.qzcsbj;

import java.util.Arrays;
import java.util.Scanner;

/**
 * @公众号 : 全栈测试笔记
 * @博客 : www.cnblogs.com/uncleyong
 * @微信 : ren168632201
 * @描述 : <>
 */
public class Test {
    public static void main(String[] args) {
        int[][] d = { { 1, 2, 9 }, { 5 }, { 1, 3 }, { 9, 7, 0 } };
        for (int i = 0; i < d.length; i++) {
            for (int j = 0; j < d[i].length; j++) {
                System.out.print(d[i][j] + "\t");
            }
            System.out.println();
        }
    }
}

 

 

有2个班,每个班有3名学生,提示用户分别输入学生的成绩,将数据保存到二维数组中,并计算每个班的平均分、全校的最高分、最低分,最后输出平均分最高的班以及对应的平均分 

package com.qzcsbj;

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        int[][] scores = new int[2][3];
        double maxavg = 0;
        int maxavgClass = 0;
        int i = 0;
        for (; i < scores.length; i++) {
            System.out.println("-------请输入第" + (i + 1) + "个班级的学生成绩-------");
            double sum = 0, avg = 0;
            for (int j = 0; j < scores[i].length; j++) {
                System.out.print("请输入第" + (j + 1) + "名学生的成绩:");
                scores[i][j] = input.nextInt();
                sum += scores[i][j];
            }
            avg = sum / 3;
            if (avg>maxavg){
                maxavg=avg;
                maxavgClass= i+1;
            }
            System.out.println("第" + (i + 1) + "个班级的平均分为:" + avg);
        }

        int max = scores[0][0], min = scores[0][0];
        for (int i2 = 0; i2 < scores.length; i2++) {
            for (int j = 0; j < scores[i2].length; j++) {
                if (scores[i2][j] > max) {
                    max = scores[i2][j];
                }
                if (scores[i2][j] < min) {
                    min = scores[i2][j];
                }
            }
        }
        System.out.println("最高分:" + max);
        System.out.println("最低分:" + min);
        System.out.println("最高平均分班级为:" + maxavgClass +"班,平均分为:" + maxavg);

    }
}

  

 

 

冒泡实现排序,[9,6,4,5,3],输出:[3, 4, 5, 6, 9],要求打印每一轮每一次冒泡后的结果

package com.qzcsbj;

import java.util.Arrays;
import java.util.Scanner;

/**
 * @公众号 : 全栈测试笔记
 * @博客 : www.cnblogs.com/uncleyong
 * @微信 : ren168632201
 * @描述 : <>
 */
public class Test {
    public static void main(String[] args) {
        int[] nums = {9,6,4,5,3};

        // 外层循环控制比较的轮数
        for (int i = 0; i < nums.length - 1; i++) {
            // 内层循环控制每一轮比较的次数
            for (int j = 0; j < nums.length - i - 1; j++) {
                if (nums[j] > nums[j + 1]) {
                    int temp = nums[j + 1];
                    nums[j + 1] = nums[j];
                    nums[j] = temp;
                    System.out.println("第" + (i + 1) + "轮,第" + (j+1) + "次:" + Arrays.toString(nums));
                }
            }
            System.out.println("==第" + (i + 1) + "轮结果:" + Arrays.toString(nums));
        }

        System.out.println(">>排序后的数组:" + Arrays.toString(nums));
    }
}

 

 

不定长参数

不定长参数的本质是数组

 

笔试题

数组中有一个数字出现的次数超过数组长度的一半

例如:{1,2,3,2,2,2,5,4,2},数字2在数组中出现了5次,超过数组长度的一半,因此输出2

两种方法

public static void main(String[] args) {
       int[] nums = {1,2,3,2,2,2,5,4,2};
       System.out.println(getFromSort(nums));
       System.out.println(getFromMap(nums));
   }
 
   public static int getFromSort(int[] array){
       Arrays.sort(array);
       System.out.println(Arrays.toString(array));
       int mid = array.length/2;
       int midvalue = array[mid];
       int times = 0;
       for(int i=0;i<array.length;i++){
           if (array[i] == midvalue){
               times ++;
               if (times>mid){
                   return array[i];
               }
           }
       }
       return -1;
   }
 
   public static int getFromMap(int[] array){
       int mid = array.length/2;
       Map<String, Integer> map = new HashMap<>();
       for(int i=0;i<array.length;i++){
           String key = array[i] + "";
           if(map.get(key)==null){
               map.put(key,1);
           }else{
               map.put(key,map.get(key)+1);
           }
 
           if (map.get(key)>mid){
               return Integer.parseInt(key);
           }
       }
       return -1;
   }

 

【java百题计划汇总】

详见:https://www.cnblogs.com/uncleyong/p/15828510.html

 

【bak】

原文会持续更新,原文地址: https://www.cnblogs.com/uncleyong/p/17043958.html

 

posted @ 2023-01-13 07:17  全栈测试笔记  阅读(318)  评论(1编辑  收藏  举报
浏览器标题切换
浏览器标题切换end