zoukankan      html  css  js  c++  java
  • java基础 ---- 一维数组

    为什么要使用数组: 因为不使用数组计算多个变量的时候太繁琐,不利于数据的处理。

    --------   数组也是一个变量,是存储一组相同类型的变量

    声明一个变量就是在内存中划出一块合适的空间

    声明一个数组就是在内存中划出一块连续的空间

    数组长度就是数组存放了多少个数,最大下标等于数组长度减一

    数组中所有的元素必须属于相同的数据类型

    -----------  如何使用数组

     

     

     

    注意: 在边声明边赋值的时候不要再声明长度了   [] 中不要在写值了偶

    边声明边赋值的时候数组的长度就被确定了,不能在往数组里面添加数字了

    ----   练习

    import java.util.Scanner;
    
    public class ArrayDemo {
    
        /**
         * 使用数组计算平均分
         */
        public static void main(String[] args) {
            int[] scores = new int[5];    //成绩数组
            int sum = 0;                //成绩总和
            Scanner input = new Scanner(System.in);
            System.out.println("请输入5位学员的成绩:");
            for(int i = 0; i < scores.length; i++){
                scores[i] = input.nextInt();
                sum = sum + scores[i];    //成绩累加
            }
            /*//使用foreach遍历
            for(int i = 0; i < scores.length; i++){
                scores[i] = input.nextInt();
            }
            for(int score:scores){
                sum+=score;
            }*/
            //计算并输出平均分
            System.out.println("学员的平均分是:" + (double)sum/scores.length);
        }
    }

     ----- 使用数组的常见错误

    1、直接赋值的时候不需要写长度  但是不赋值的话要写长度,    int[] scores = new int[];   

    2、数组下标越界异常      下标超过了数组长度减一的值

    3、在进行创建数组并赋值的时候要放在同一条语句中

    ----  猜数游戏

    import java.util.*;
    
    public class GuessData {
    
        public static void main(String[] args) {
            int[] list = new int[] { 8, 4, 2, 1, 23, 344, 12 }; // 创建数组并赋值
            
            int sum=0;
            //循环输出数列的值
            //求数列中所有数值的和
            for(int num:list){
                System.out.println(num);
                sum+=num;
            }
            System.out.println("数组元素之和为:"+sum);
    
            Scanner input = new Scanner(System.in);
            System.out.print("请输入一个整数: ");
            int guess = input.nextInt();
            boolean isCorrect = false;
            for (int i = 0; i < list.length; i++) {
                if (guess == list[i]) {
                    isCorrect = true;
                    break;
                }
            }
            if (isCorrect) {
                System.out.println("猜对了!");
            } else {
                System.out.println("Sorry!");
            }
        }
    
    }

    -----   求最大值

    import java.util.Scanner;
    
    public class MaxScore {
    
        /**
         * 求数组最大值
         */
        public static void main(String[] args) {
            int[] scores = new int[5];
            int max = 0;    //记录最大值
            System.out.println("请输入5位学员的成绩:");
            Scanner input = new Scanner(System.in);
            for(int i = 0; i < scores.length; i++){
                scores[i] = input.nextInt();
            }
            //计算最大值
            //使用max存储擂主初始值:第一个元素为擂主
            max = scores[0];
            //循环打擂
            for(int i = 1; i < scores.length; i++){
                if(scores[i] > max){
                    max = scores[i];
                }
            }
            System.out.println("考试成绩最高分为:" + max);
        }
    }

    ----------  插入数值

    有一个降序排列的数组,新增一个数字,也要保持降序排列

    注要就是把插入的数值与数组中的值依次进行比较,找到第一个数值比他小的位置,就是他要插入的位置,然后在把他下标往后面的移动一位,

    import java.util.*;
    
    public class Insert {
    
        public static void main(String[] args) {
            int[] list = new int[6]; // 长度为为6的数组
            list[0] = 99;
            list[1] = 85;
            list[2] = 82;
            list[3] = 63;
            list[4] = 60;
    
            int index = list.length; // 保存新增成绩插入位置
            System.out.println("请输入新增成绩: ");
            Scanner input = new Scanner(System.in);
            int num = input.nextInt(); // 输入要插入的数据
            // 找到新元素的插入位置
            for (int i = 0; i < list.length; i++) {
                if (num > list[i]) {
                    index = i;
                    break;
                }
            }
            // 元素后移
            for (int j = list.length - 1; j > index; j--) {
                list[j] = list[j - 1]; // index下标开始的元素后移一个位置
            }
            list[index] = num;// 插入数据
            System.out.println("插入成绩的下标是:" + index);
            System.out.println("插入后的成绩信息是: ");
            for (int k = 0; k < list.length; k++) { // 循环输出目前数组中的数据
                System.out.print(list[k] + "	");
            }
    
        }
    
    }

    -----  统计数组中奇数和偶数的个数

    package cn.jbit.lesson3;
    
    import java.util.Scanner;
    
    /**
     * 统计数组中的奇数和偶数的个数
     *
     */
    public class ArrayEx {
        public static void main(String[] args) {
            int[] array = new int[8];
            Scanner input = new Scanner(System.in);
            int count1 = 0;  //记录奇数的个数
            int count2 = 0;  //记录偶数的个数
            
            //从控制台接收8个整数,分别统计奇数和偶数的个数
            for(int i=0;i<array.length;i++){
                System.out.print("请输入第"+(i+1)+"个整数:");
                array[i] = input.nextInt();
                if(array[i]%2==0){
                    count1++;
                }else{
                    count2++;
                }
            }
            System.out.println();
            System.out.println("奇数的个数是:"+count2+"。");
            System.out.println("偶数的个数是:"+count1+"。");
        }
    }

    ----  数组倒叙复制输出

     1 package cn.jbit.lesson3;
     2 /**
     3  * 数组倒序复制输出
     4  * @author boge
     5  *
     6  */
     7 public class ArrayEx2 {
     8     public static void main(String[] args) {
     9         int[] array = new int[10];  //源数组
    10         int[] newArray = new int[10];  //目标数组
    11         for(int i=0;i<array.length;i++){
    12             array[i] = i;  //元素的值等于其下标
    13         }
    14         System.out.println("原数组:");
    15         for(int num:array){
    16             System.out.print(num+"	");
    17         }
    18         
    19         System.out.println();
    20         
    21         int index = array.length-1;
    22         
    23         for(int i=0;i<newArray.length;i++){
    24             newArray[i] = array[index--];
    25         }
    26         
    27         System.out.println("新数组:");
    28         for(int num:newArray){
    29             System.out.print(num+"	");
    30         }
    31     }
    32 }

    ------ 去除数组中的0

    /**
     * 去除数组中的0
     *
     */
    public class ArrayEx3 {
        public static void main(String args[]){
            int oldArr [] = {11,31,23,54,0,0,77,90,0,5,42,71,63,79,60,53} ;
            
            int count = 0 ;  //记录数组中不为0的元素个数
            for(int i = 0 ; i < oldArr.length; i++){
                if(oldArr[i] != 0){
                    count ++ ;    // 统计个数
                }
            }
            int newArr [] = new int[count] ;    // 新数组
            
            //将原数组中不为0的元素保存到新数组中
            int j = 0 ;    // 控制新数组的下标
            for(int i = 0 ; i < oldArr.length; i++){
                if(oldArr[i] != 0){
                    newArr[j++] = oldArr[i] ;
                }
            }
            //输出新数组
            for(int i = 0 ; i< newArr.length ; i++){
                System.out.print(newArr[i] + "	") ;
            }
            
        }
        
    }

    ----  合并数组

     1 public class ArrayEx4 {
     2     public static void main(String args[]){
     3         int arrayA [] = new int[] {1,7,9,11,13,17,19} ;
     4         int arrayB [] = new int[] {2,4,6,8,10} ;
     5         
     6         int len = arrayA.length + arrayB.length ;    // 新数组的大小
     7         int arrayC[] = new int[len] ;                // 新数组
     8         
     9         System.arraycopy(arrayA,0,arrayC,0,arrayA.length) ;    // 拷贝第一个数组
    10         System.arraycopy(arrayB,0,arrayC,arrayA.length,arrayB.length) ;    // 拷贝第二个数组
    11         java.util.Arrays.sort(arrayC) ;
    12         
    13         
    14         for(int x = 0 ; x< arrayC.length ; x++){
    15             System.out.print(arrayC[x] + "、") ;
    16         }
    17     }
    18 }
  • 相关阅读:
    CentOS 配置自启动Redis
    WPF Popup全屏 弹出方法。解决只显示75%的问题。
    UpdatePanel控件的使用和局部刷新
    关于width与padding
    WPF 快捷方式
    深入浅出WPF——附加事件(Attached Event)
    控件属性使用代码动代绑定
    ICommand.CanExecuteChanged事件订阅对象的变化
    输入德文出现乱码现象的处理方法
    MVVM 模版里的控件怎样触发命令
  • 原文地址:https://www.cnblogs.com/obge/p/10713526.html
Copyright © 2011-2022 走看看