精华内容
下载资源
问答
  • 对于入门选手,首先肯定会想到用二维数组,二维数组的实质其实就是一个一维数组,只不过数组里面存的是其他数组的首地址,通过引用指向其他数组。需要注意的是,学生成绩需要用户手动输入,这需要使用...

    229fbfa8aed81e4624b22cd95701a111.png

    今天练习的时候遇到一个题目,题目需求是这样的:

    需求说明:

    根据3个班各5名学生某门课程的成绩,正确使用二维数组计算如图所示3个班各自的总成绩

    a91838115ff8c264c42d232c268d34de.png

    分析:

    要实现这个功能需要存储两个信息:

    • 一个是班级信息,一个是学生成绩信息,对于入门选手,首先肯定会想到用二维数组,二维数组的实质其实就是一个一维数组,只不过数组里面存的是其他数组的首地址,通过引用指向其他数组。
    • 需要注意的是,学生成绩需要用户手动输入,这需要使用到Java的Scanner类,通过该类的对象调用nextInt()(接收整型数据),next()(接收字符串类型),具体用法如下:
    import java.util.Scanner;//导入类
     Scanner sc=new Scanner(System.in);//实例化Scanner对象
     int studentScore=sc.nextInt();//接收用户输入的Int型数据

    只需要用到两个for循环进行嵌套,用户依次输入数据存入数组;

    下面是具体的代码:

    import java.util.Scanner;
    public class Test08 {
        public static void main(String[] args) {
            int[][] scores=new int[3][5];
            Scanner sc=new Scanner(System.in);
            int sum=0;
            for (int i = 0; i <scores.length ; i++) {
                System.out.println("********第"+(i+1)+"个班********");
                for(int j=0;j<scores[i].length;j++){
                    System.out.print("请输入第"+(j+1)+"个同学的成绩:");
                    int studentScore=sc.nextInt();
                    scores[i][j]=studentScore;
                }
            }
            System.out.println("********成绩统计********");
            for (int i = 0; i <scores.length ; i++) {
                for(int j=0;j<scores[i].length;j++){
                    sum+=scores[i][j];
                }
                System.out.print((i+1)+"班总成绩:"+sum);
                System.out.println();
                sum=0;
            }
        }
    }

    下面是运行结果截图:

    ********第1个班********
    请输入第1个同学的成绩:50
    请输入第2个同学的成绩:60
    请输入第3个同学的成绩:70
    请输入第4个同学的成绩:80
    请输入第5个同学的成绩:90
    ********第2个班********
    请输入第1个同学的成绩:10
    请输入第2个同学的成绩:20
    请输入第3个同学的成绩:30
    请输入第4个同学的成绩:40
    请输入第5个同学的成绩:50
    ********第3个班********
    请输入第1个同学的成绩:20
    请输入第2个同学的成绩:30
    请输入第3个同学的成绩:40
    请输入第4个同学的成绩:50
    请输入第5个同学的成绩:60
    ********成绩统计********
    1班总成绩:350
    2班总成绩:150
    3班总成绩:200
    Process finished with exit code 0
    ​

    本人小白一个,尚在努力学习中,想交流学习心得、看更多每日学习小文章,可关注我的微信公众号【Java菜鸟的进阶之路】一起交流成长!

    文章链接:

    Java中关于二维数组的理解与使用mp.weixin.qq.com
    8c50e605259b132a9b5d3933b47f2f64.png
    展开全文
  • 因为python中没有数组,所以一般用列表来实现二维数组。 都知道Python中有深拷贝和浅拷贝问题,所以在初始化二位数组时候可能不小心就会遇到这样问题,比如: arr = [[0] * 3] * 4 或者 a = [[]]*4 ...

    因为python中没有数组,所以一般用列表来实现二维数组。

    都知道Python中有深拷贝和浅拷贝的问题,所以在初始化二位数组的时候可能不小心就会遇到这样的问题,比如:

    arr = [[0] * 3] * 4

    或者

    a = [[]]*4

    这样的问题在于其实*4只是复制了n个[0,0,0]或者[]的引用,改任何一个数组都会让另外3个发生改变。

     

    那么正确的初始化方法:(避免发生浅拷贝)

    (1)直接创建

    arr = [[0,0,0],
        [0,0,0], 
        [0,0,0],
        ]

    (2)列表生成器创建

    arr = [([0] * 4) for i in range(5)]	#初始化为0

    (3)numpy创建

    import numpy as np
    arr = np.zeros((3, 4), dtype=np.int)

     

    展开全文
  • python二维数组的创建

    2019-11-30 13:08:00
    话不多说,代码伺候 m = [[0]*5]*3 #创建个3行5列的二维数组 m[1][2]=1 print(m) 输出结果为: ...创建个二维数组的正确方法是: m = [[0]*5 for i in range(3)] #创建个3行5列的二维数组 ...

    话不多说,代码伺候

     

    m = [[0]*5]*3   #创建一个3行5列的二维数组
    m[1][2]=1
    print(m)

     

    输出结果为:

     

     

    分析:

     m = [[0]*5]*3只是指向三个空列表的引用。

     

    创建一个二维数组的正确方法是

     m = [[0]*5 for i in range(3)]    #创建一个3行5列的二维数组

     

    展开全文
  • 一个一维数组A的元素如果还是一个一维数组类型的,则,此数组A称为二维数组。 2. 二维数组的声明与初始化 正确的方式: //一维数组 int[] arr = new int[]{1,2,3}; //静态初始化 int[][] arr1 = new int[]...

    1.如何理解二维数组?

    • 数组属于引用数据类型
    • 数组的元素也可以是引用数据类型
    • 一个一维数组A的元素如果还是一个一维数组类型的,则,此数组A称为二维数组。

    2. 二维数组的声明与初始化

    正确的方式:

    		//一维数组
    		int[] arr = new int[]{1,2,3};
    		//静态初始化
    		int[][] arr1 = new int[][]{{1,2,3},{4,5},{6,7,8}};
    		//动态初始化1
    		String[][] arr2 = new String[3][2];
    		//动态初始化2
    		String[][] arr3 = new String[3][];
    		//也是正确的写法:
    		int[] arr4[] = new int[][]{{1,2,3},{4,5,9,10},{6,7,8}};
    		int[] arr5[] = {{1,2,3},{4,5},{6,7,8}};//类型推断
    

    错误的方式:

    	//String[][] arr4 = new String[][4];
    	//String[4][3] arr5 = new String[][];
    	//int[][] arr6 = new int[4][3]{{1,2,3},{4,5},{6,7,8}};
    

    3.如何调用二维数组元素:

    	System.out.println(arr1[0][1]);//2
    	System.out.println(arr2[1][1]);//null
    	arr3[1] = new String[4];
    	System.out.println(arr3[1][0]);
    	System.out.println(arr3[0]);//
    

    4.二维数组的属性:

    	System.out.println(arr4.length);//3
    	System.out.println(arr4[0].length);//3
    	System.out.println(arr4[1].length);//4
    

    5.遍历二维数组元素:

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

    6.二维数组元素的默认初始化值

    规定:二维数组分为外层数组的元素,内层数组的元素

     int[][] arr = new int[4][3];
     外层元素:arr[0],arr[1]等
     内层元素:arr[0][0],arr[1][2]等
    

    数组元素的默认初始化值 :

     针对于初始化方式一:比如:int[][] arr = new int[4][3];
     外层元素的初始化值为:地址值
     内层元素的初始化值为:与一维数组初始化情况相同
     针对于初始化方式二:比如:int[][] arr = new int[4][];
     外层元素的初始化值为:null
     内层元素的初始化值为:不能调用,否则报错。
    

    7,二维数组的内存结构

    展开全文
  • 想做的就是读取制定目录下的文件,存在个二维数组中(文件个数为二维数组的行数,文件名可以为存为二维数组每行里面),先试试了二维数组的创建就错误百出,我先给出正确的代码吧: #include #include ...
  • 一维数组引用数据类型,它的元素也可以是引用数据类型 一个一维数组A的元素如果还是一个一维数组,那么此数组A就是一个二维数组 */ 2.二维数组的声明和初始化 /* 正确方式: 静态初始化: int[][] arr =new int...
  • 一个一维数组A的元素如果还是一个一维数组类型的,则,此数组A称为二维数组。 2.二维数组的声明与初始化 正确的方式:  int[] arr = new int[]{1,2,3};//一维数组  //静态初始化  int[][] arr1 = new int[][]{...
  • c语言二维数组元素引用和参数传递

    千次阅读 2012-09-22 22:56:34
    在学习C语言中,多维数组元素应用有许多不同方式。其中以二维数组最为常见。例如声明数组 int a[3][4]。...我还可以使用种违反常规,但是也正确的方法:*((*a) + 2 * 4 + 3)(E2)。  无论是上面什么方
  • #include #include int main() { int num[2][2]={{1,2},{3,4}}; /*以下是引用num[1][1]方法*/ //printf("%d\n",(num+1)[1]); //错误写法 printf("%d\n",*(*(num+1)+1)); //正确的写法==>联想一维数组*ar
  • 一个一维数组的元素是个一维数组 从数组底层运行机制来看,其实并没有多维数组 因为数组元素既可以是基本类型,也可以引用类型 而数组本身就是一个引用类型,所以构成了多维数组的诞生 二. 二维数组的基本使用 1. ...
  • 值传递 1、值传递和引用传递区别 ...错误理解:值传递和引用传递,区分条件是传递内容,如果是个值,就是值传递。如果是个引用, 就是引用传递。 错误理解二:Java是引用传递。 错误理解三:传递参数
  • list创建一维数组, arr = [0] * n 没问题 list创建二维数组 arr = [[0] * n] * m 有问题,里面[0] * n是同一个引用,更改其中一个,都会修改全部。 正确做法是用列表推导式 a = [ [0 for j in range(n)] for i ...
  • 引用数组第二行第二列元素值,则下列不正确的表达式为 A:*(*(a+1)+1) B:*(*(p+1)+1) C:*(*(++a)+1) //错误 D:*(*(++p)+1) 解析:因为数组名a是个常量,而p是个变量,a可以a+1,但...
  • Java的数组

    2021-02-18 10:13:49
    1、一维数组 1.1、声明数组:一般的数据类型都可以进行数组声明数组 语法正确但不规范的声明数组: 1.2、数组初始化 数组的初始化主要有两种方式:静态初始化和动态初始化/1. 1.2.1、静态初始化:根据后面指定的值...
  • C 语言复习题 第七章 数组 (8 学时 ) 学习目的与要求 1 重点掌握一维数组的定义和引用 2 基本掌握二维数组的定义和引用 3 重点掌握字符型数组的定义与引用 4 能正确使用字符串处理函数 5 学会使用数组解决实际问题 ...
  • 学习目的与要求 1 重点掌握一维数组的定义和引用 2 基本掌握二维数组的定义和引用 3 重点掌握字符型数组的定义与引用 4 能正确使用字符串处理函数 5 学会使用数组解决实际问题 重点 1 一维数组的定义与引用 ...
  • 第七章 数组 (8 学时 ) 学习目的与要求 重点掌握一维数组的定义和引用 基本掌握二维数组的定义和引用 重点掌握字符型数组的定义与引用正确使用字符串处理函数 学会使用数组解决实际问题 重点 1 一维数组的定义与...
  • 数组的声明和使用

    2020-07-19 14:22:56
    1.一维数组的声明与初始化 正确的方式: int num;//声明 num = 10;//初始化 int id = 1001;//声明 + 初始化 int[] ids;//声明 //1.1 静态初始化:数组的初始化和数组元素的赋值操作同时进行 ids = new int[]{1001,...
  • 6 数组推导

    2021-01-13 22:04:31
    数组推导 1、一维数组 2、二维数组 3、乘法问题 第一个代码块问题在于把[1,2,3]重复了三遍,后面两个都是第一个的引用,修改一行会引起其他行变化。正确的方法是第二种。
  • 使用上一节所描述的笨拙...C编译器必须要知道数组的边界,以 便为下标引用产生正确的代码。从技术上说,也可以在运行时处理才知道数组的边界,而且很多其他语言就是这样做的,但这种做法违背了C语言的设计理念。  
  • 对于元素为引用类型的数组,CLR允许将数组元素从种类型转型另种。 成功转型要求数组维数相同,而且必须从元素源类型到目标类型隐式或显示转换。 CLR不允许将值类型元素的数组转型为其他任何类型。(不过,...
  • 二二维数组元素的使用 二维数组中元素相当于个变量,我们可以象使用个变量那样使用二维数组元素...a[1,3] C) a(5) D) a [10-10] 三二维数组的初始化 采用以下两种方法之进行 1.类型说明符 数组名[行数][列数]={{数
  • c#打包-数组

    2020-10-16 02:18:34
    一维数组的方法 CopyTo 复制到 从指定索引开始复制数组给另一个数组 这个方法是纯操作,没有返回值,所以目标数组需要作为参数传入进去 Clone 克隆 之前将引用类型的时候我们想做一个和原来数组一样的数组 就直接把...
  • 1.1一维数组的声明与字符数组 1.1.1一维数组的声明与初始化 1.一维数组的声明 例1:如下定义是否正确? int& a[10]; error C2109: 下标要求数组或指针类型 例2:定义数组a的引用。 ...
  • 实验2 C++数组与指针

    2017-03-10 21:47:00
    掌握一维数组和二维数组的定义、赋值和输入输出的方法。 掌握字符数组和字符串函数的使用。 通过实验进一步掌握指针的概念,会定义和使用指针变量。 能正确使用数组的指针和指向数组的指针变量。 ...
  • C++数组和指针

    2017-12-17 17:35:54
    数组和指针是C++的两种类似于vector和迭代器的低级复合类型。平时应当尽量使用vector和迭代...3、非const变量以及到运行阶段才知道其值的const变量都不能用于定义数组的维数。 4、数组下标的正确类型时size_t。  
  • java中数组

    2016-01-09 16:48:43
    数组是java中的种数据类型,并且为引用数据类型。long为基本数据类型,而long[]为引用...//注意不定义长度是不正确的,在编译的时候会报“缺少数组数”的错误  数组的定义并赋值:   int[] a3 = new ...
  • C语言第6章数组.doc

    2020-12-01 10:10:43
    第六章 数组 单选题 在C语言中,引用数组元素时,其数组下标的数据类型允许是( ) 整型常量 整型常量或整型...则数组x在内存中所占字节数为( ) 3 6 12 40 以下对一维整型数组a的正确说明是( ) int a(10; int n=10,a[n]; in
  • for语句处理多维数组

    2019-10-03 00:03:09
    下面这段代码非法,因为row指向是每一行一个大小为10的一维数组,默认转为指针,即row其实是一个int*类型指针,显然内层循环就出错了 int arr[10][10]; for(auto row:arr) { for(auto col:row) { cout<...
  • C数组题及答案.doc

    2020-07-12 07:32:47
    阅读使人充实会谈使人敏捷写作使人精确培根 题1在C ++语言中引用数组元素时其数组下标的数据类型允许是 A整型常量 B整型表达式 C整型常量或整型表达式 D任何类型的表达式 题2以下对一维整型数组a 的正确说明是 Aint ...

空空如也

空空如也

1 2 3 4 5 6
收藏数 109
精华内容 43
关键字:

一维数组的正确引用