第七、八周java学习总结

为了更方便地处理批量数据,学习了一种新的数据处理方式——数组。

一、一维数组
1、基本概念
一组相同类型的数据,给它们取一个共同的名字,然后通过下标取访问每一个元素。一般而言,数组往往会结合循环结构来进行相应的处理。
2、数组使用步骤
(1)声明数组
(2)分配空间
(3)给数组元素赋值
(4)利用数组元素参与运算
接下来用示例演示如何利用数组来存储一串数据:

package net.wek7;

import java.util.Scanner;

/*
功能:计算一组成绩的平均分,要求用数组保存成绩
日期:2019.4.9
 */
public class CalculateAverage {
    public static void main(String[] args) {
        //声明部分
        double[]score = new double[10];//声明并分配(创建)空间,可以存储十个数,第一个数的下标为:0
        double sum=0,average;
        Scanner sc =new Scanner(System.in);

        //输入部分
        for(int i = 0; i < score.length;i++){//初始条件;循环条件;迭代条件
            System.out.print("score["+ i +"]=");
            score[i] = sc.nextDouble();
        }

        //处理部分
        for(int i = 0; i < score.length;i++){
            sum = sum +score[i];
        }
        average = sum/score.length;

        //输出部分
        System.out.println("average = "+average);
    }
}

运行结果如下:
在这里插入图片描述
示例程序:遍访数组,求出最大值及其位置
构思:1、声明数据类型并分配(创建)空间,可以存储十个整数,第一个数的下标为:0;
声明最大值的数据类型;
添加扫描器。
2、表示max存储于数组score中
利用循环结构,定义i= 1(写出i的数据类型);
利用for遍历循环并比较i与数组中数的大小;
如果i的值小于数组中的数,就将数值中的改为数赋值给i,新的i值继续与数组中的数比较大小,直至最后一位,如果i值始终比数据中的数大,则不发生任何赋值;
调用声明部分的扫描器读取输入的整型数据的值。
3、处理部分使最大值=数组中的最大值。
4、输出部分for满足最大值=数组中的最大值,那么就输出其最大值在数组中的下标。

package net.wek7;
/*
功能:找出最大/最小值的位置
日期:2019.4.11
 */
import java.util.Scanner;

public class FindMaxAndPostion {
    public static void main(String[] args) {
        //声明部分
        int[] score = new int[10];
        int max;
        Scanner sc = new Scanner(System.in);

        //输入部分
        for(int i = 0; i< score.length;i++){
            System.out.print("score["+ i + "]=");
            score[i] = sc.nextInt();
        }
        //处理部分
        max= score[0];
        for(int i= 1;i<score.length;i++){
            if(max < score[i]){
                max  = score[i];
            }
        }
        //输出部分
        System.out.println("maxscore=" + max);
        for(int i= 0;i<score.length;i++){
            ;
            if(max == score[i]){
                System.out.println("score[" + i + "]=" + max);
            }

        }
    }
}

那么到这里大家是否会好奇如何对数组进行排序呢?其实很简单,对于升序而言,就是直接使用sort
例如:

数组排序,方法很多。我们可以直接利用Arrays类的sort方法来搞定。
1    package net.hw.lesson05;
2    
3    import java.util.Arrays;
4    
5    /**
6     * 功能:利用Arrays类的sort方法对数组进行排序
7     * 作者:谯婷
8     * 日期:2019年4月16日
9     */
10   public class ArraysDemo {
11       public static void main(String[] args) {
12           // 定义整型数组,采用静态初始化
13           int[] a = {54, 66, 34, 67, 33, 12, -90, 35, 56, 90};
14   
15           // 排序前
16           System.out.print("排序前:");
17           for (int i = 0; i < a.length; i++) {
18               System.out.print(a[i] + " ");
19           }
20           System.out.println();
21   
22           // 升序处理
23           Arrays.sort(a);
24   
25           // 排序后
26           System.out.print("排序后:");
27           for (int i = 0; i < a.length; i++) {
28               System.out.print(a[i] + " ");
29           }
30       }
31   }

结果如下:
在这里插入图片描述
如果想要降序呢?
在这里插入图片描述
这样呀,就可以很轻松的解决小问题啦
在这里插入图片描述
问题:假如说需要创建一个数组b,恰好是数组a的降序排列,怎么来实现呢?
在这里插入图片描述
二、二维数组
1、使用二维数组四步曲
(1)声明二维数组
(2)分配内存空间
(3)给数组元素赋值
(4)数组元素参与运算

2、二维数组的访问
(1)访问全部元素(遍历)
(2)访问某个元素
(3)访问某行元素
(4)访问某列元素
示例程序:演示二维数组的用法:

/**
 * 功能:演示二维数组的用法
 * 作者:谯婷
 * 日期:2018年4月17日
 */
package lzy.hw.chapter5;

public class Test2DArray {
    public static void main(String[] args) {
        int[][] a = new int[3][4]; // 创建3行4列的二维数组

        a[0][0] = 34; // 给第1行第1列元素赋值
        a[1][2] = 100; // 给第2行第3列元素赋值

        System.out.println("a[0][0]=" + a[0][0]);
        System.out.println("a[1][2]=" + a[1][2]);

        int sum = a[0][0] + a[1][2];
        System.out.println("a[0][0]+a[1][2]=" + sum);

        // 静态初始化
        int[][] b = { { 12, 45, 66, 24 }, { 56, 78, 90, 32 }, { 32, 44, 56, 98 } };

        System.out.println("全部元素:");
        for (int i = 0; i < b.length; i++) {
            for (int j = 0; j < b[i].length; j++) {
                System.out.print(b[i][j] + " ");
            }
            System.out.println(); // 换行
        }

        System.out.println("第2行第3列元素:" + b[1][2]);

        System.out.print("第3行的全部元素:");
        for (int j = 0; j < b[2].length; j++) {
            System.out.print(b[2][j] + " ");
        }
        System.out.println();

        System.out.println("第3列的全部元素:");
        for (int i = 0; i < b.length; i++) {
            System.out.println(b[i][2]);
        }
    }
}

运行结果如图:
在这里插入图片描述
猜数游戏(一次):

package net.wek7;
/**
        功能:猜数游戏,玩一次
 */
import java.util.Random;
import java.util.Scanner;

public class NumberGuessGame01 {
    public static void main(String[] args) {
        int num,target;
        Scanner sc = new Scanner(System.in);
        Random random = new Random();

        target = random.nextInt(100)+1;//计算机随机产生1~100之间的数
        System.out.print("num = ");
        num = sc.nextInt();
        while (num != target){
            //判断输入的数是大还是小,需要给用户一个提示
            if(num > target){
                System.out.println("Too high!");
            }else{
                System.out.println("Too low!");
            }
            System.out.print("num = ");
            num = sc.nextInt();
        }
        System.out.println("That's it!");
        System.out.println("Thanks for your playing.");
    }
}

猜数游戏(多次):

import java.util.Scanner;

/**
功能:猜数游戏,玩多次
 */
public class NumberGuessGame02 {
    public static void main(String[] args) {
        int num,target;
        String choice;
        Scanner sc = new Scanner(System.in);

        choice = "y";
        while(choice.equalsIgnoreCase("y")){
            target = (int)(Math.random()*100)+1;//随机数产生的另一种方法
            System.out.print("num = ");
            num = sc.nextInt();
            while (num != target){
                //判断输入的数是大还是小,需要给用户一个提示
                if(num > target){
                    System.out.println("Too high!");
                }else{
                    System.out.println("Too low!");
                }
                System.out.print("num = ");
                num = sc.nextInt();
            }
            System.out.println("That's it!");
            System.out.println("Would you like to play again?[Y/N]");
            choice = sc.next();
        }
        System.out.println("Thanks for your playing.");
    }
}

数组输出斐波拉契序列前30项,采用数组

package net.wek8;
/*
功能:数组输出斐波拉契序列前30项,采用数组
日期:2019.4.16
 */
public class FibnacciSeriesUsingArray {
    public static void main(String[] args) {
        //声明部分
        int[] f = new int[30];

        //输入部分
        f[0] = 1;
        f[1] = 1;

        //处理部分
        for (int i = 2; i < f.length;i++){
            f[i] = f[i - 1] + f[i - 2];
        }
        //输出部分
        for (int i = 0;i < f.length;i++){
            System.out.print(f[i] + " ");
        }
    }
}

数组输出斐波拉契序列前30项,不采用数组

package net.wek8;
/**
 * 功能:输出斐波拉契序列前30项,不采用数组
 */
public class FibonacciNotUsingArray {
    public static void main(String[] args) {
        int f1,f2,f3;
        f1 = f2 = 1;

        System.out.print(f1 + " " + f2);

        for (int i = 0;i < 28;i++){
            f3 = f1 + f2;
            System.out.print(f3 + " ");
            f1 = f2;
            f2 = f3;
        }
    }
}

运行结果一样的:
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值