精华内容
下载资源
问答
  • Java 读取简单的数字阵列,比如212 33 5512 33 5551 23 5588 955 77981 23 5588 955 77980红色的是输入,黑色的为输出,各个数字之间用空格隔开,开头单独一行表示二维数组的行数,最后的0,表示结束。这个可以用来...

    Java 读取简单的数字阵列,比如

    2

    12 33 5

    5

    12 33 5

    5

    5

    1 23 5

    5

    88 9

    55 77

    98

    1 23 5

    5

    88 9

    55 77

    98

    0

    红色的是输入,黑色的为输出,各个数字之间用空格隔开,开头单独一行表示二维数组的行数,最后的0,表示结束。这个可以用来建立邻接表等

    比如输入 :

    3

    1 2

    2

    0

    表示结点 0 ,1 ,2之间的关系,0可以到1,2

    1可以到2

    2可以到0

    import java.util.*;

    class Maze {

    private Vector  > MazeList;

    public void PrintList() {

    for(int i= 0;i

    for(int j = 0;j

    System.out.print(MazeList.get(i).get(j)+" ");

    }

    System.out.println(" ");

    }

    }

    void run() throws Exception {

    Scanner input = new Scanner(System.in);

    String temp = input.nextLine();

    String[] lines = temp.trim().split(" ");

    while(lines.length==1){         //take the number of lines

    MazeList = new Vector  >();

    int TC = Integer.parseInt(lines[0]);

    if( TC == 0 ) break;

    int i = 0;

    while(TC-- >0){

    temp = input.nextLine();

    if(temp.equals("")){

    MazeList.add(new Vector());//if this line is empty

    }else{

    String[] line = temp.trim().split(" "); //get one line and split it

    int j = 0;

    MazeList.add(new Vector()); //add new line and add members

    int num = line.length;

    while(num-- >0){

    MazeList.get(i).add(new Integer(Integer.parseInt(line[j])));

    j++;

    }

    i++;

    }

    }

    this.PrintList();

    temp = input.nextLine();

    lines = temp.trim().split(" ");

    }

    input.close();

    }

    public static void main(String[] args) throws Exception {

    Maze maze = new Maze();

    maze.run();

    }

    }

    利用这个存储方式,还可以用来判断一些其他功能,比如判断A点到B点是否有路径可以到,或者将

    private Vector < Vector < Integer > > MazeList;

    改为

    private Vector < Vector < IntegerPair > > MazeList;

    自己写一下IntegerPair,包含first和second两个数 ,分别表示下一节点和对应的权值,可以用来算最优路径

    展开全文
  • 下面我们就来一起探究,二维数组在改变维度长度大小的方法,并辅以实例进行代码展示。1、二维数组的每个元素都是一个一维数组,这些数组不一定都是等长的。声明二维数组的时候可以只指定第一维大小,空缺出第二维...

    2ab1131546ff3389f2d5152076d04c21.png

    我们知道二维数组,是在一维数组的基础上进行了维度的增加。那么在实际使用的过程中,有时候我们所需要的二维数组,它们其中的维度是不同的,这就需要我们手动的进行设置。下面我们就来一起探究,二维数组在改变维度长度大小的方法,并辅以实例进行代码展示。

    1、二维数组的每个元素都是一个一维数组,这些数组不一定都是等长的。声明二维数组的时候可以只指定第一维大小,空缺出第二维大小,之后再指定不同长度的数组。但是注意,第一维大小不能空缺(不能只指定列数不指定行数)。public class ArrayTest4

    {

    public static void main(String[] args)

    {

    //二维变长数组

    int[][] a = new int[3][];

    a[0] = new int[2];

    a[1] = new int[3];

    a[2] = new int[1];

    //Error: 不能空缺第一维大小

    //int[][] b = new int[][3];

    }

    }

    2、二维数组也可以在定义的时候初始化,使用花括号的嵌套完成,这时候不指定两个维数的大小,并且根据初始化值的个数不同,可以生成不同长度的数组元素。public class ArrayTest5

    {

    public static void main(String[] args)

    {

    int[][] c = new int[][]{{1, 2, 3},{4},{5, 6, 7, 8}};

    for(int i = 0; i < c.length; ++i)

    {

    for(int j = 0; j < c[i].length; ++j)

    {

    System.out.print(c[i][j]+" ");

    }

    System.out.println();

    }

    }

    }

    以上就是java二维数组指定不同长度的方法,可以看出我们可以对第二维度进行修改,不过第一维度是一定要存在的,这点是需要我们在使用时注意。更多Java学习指路:

    展开全文
  • 想将查询数据库的内容复制到二维数组中,但是总是NullPointerException,提示空指针的异常。反正我是自己研究了一个晚上,百度上看了很多的关于动态初始化二维数组的文章,但是就是没找到我这种情况的。无奈之下,我...

    想将查询数据库的内容复制到二维数组中,但是总是NullPointerException,提示空指针的异常。

    反正我是自己研究了一个晚上,百度上看了很多的关于动态初始化二维数组的文章,但是就是没找到我这种情况的。

    无奈之下,我厚着脸皮向我的指导老师发出了请求的邮件,老师在百忙之中,还是很细心的为我解答。我看到老师回复的邮件豁然开朗。

    下面将邮件的内容与大家分享!

    //对于自定义的类,当用它定义对象数组时,不仅要初始化元素的个数,还要new出每个数组元素,

    //才真正初始化出了对象数组,才可以进行赋值等操作,否则就会出现NullPointerException(空指针异常)!

    class MultiDimensionArray // 一个自定义的类,用于定义**数组来测试用。

    {

    public int a; // 定义成员变量a

    public int b; // 定义成员变量b

    public MultiDimensionArray() // 无参构造函数

    {

    this.a = 0;

    this.b = 0;

    }

    public MultiDimensionArray(int i, int j) // 有参构造函数

    {

    this.a = i;

    this.b = j;

    }

    }

    public class ArrayDefinition {        //在这个类中,将使用上面的类来定义对象数组。

    public static void main(String[] args) {

    MultiDimensionArray objArray[][] = new MultiDimensionArray[3][]; //按你的方式定义一个对象数组!

    objArray[0]=new MultiDimensionArray[3];  //定义第一行的列数

    objArray[0][0].a = 88;//此时这一句就出现NullPointerException,因为对象objArray[0][0]本身还没new出来!

    objArray[0][0]=new MultiDimensionArray();  //new出objArray[0][0]来,给该分配了空间。

    objArray[0][0].a = 88;  //此时这条语句就没错了。

    //同理,对于自定义对象数组,要通过循环new出每个元素之后,才可以给它们赋值!

    }

    }0b1331709591d260c1c78e86d0c51c18.png

    展开全文
  • 目录一维数组创建一维数组给一维数组赋值获取数组的长度常见错误二维数组创建二维数组二维数组赋值二维数组的使用场景多维数组不规则数组数组的基本操作遍历数组填充和批量替换数组元素难点解答为什么数组索引从0...

    数组是最为常见的一种数据结构,分为一级数组,二维数组以及多维数组。是把相同数据类型的元素,用一个标识符封装到一起的基本类型数据序列或对象序列。

    目录

    一维数组

    创建一维数组

    给一维数组赋值

    获取数组的长度

    常见错误

    二维数组

    创建二维数组

    给二维数组赋值

    二维数组的使用场景

    多维数组

    不规则数组

    数组的基本操作

    遍历数组

    填充和批量替换数组元素

    难点解答

    为什么数组索引从0开始?

    多维数组的长度

    一维数组

    数组元素的数据类型决定了数组的数据类型,可以是基本数据类型和其他引用类型。符号 “[ ]” 指明该变量是一个数组类型变量。单个 “[ ]” 表示是一维数组。

    创建一维数组

    声明一维数组有两种方式:

    数组元素类型 数组名字[];

    int a[];

    数组元素类型[] 数组名字;

    int[] b;

    声明数组后,还不能访问他的任何元素,因为声明数组只是给出了数组名字和元素的数据类型,并未分配内存空间。

    在声明数组的时候可以为数组分配内存空间,这种就是将声明和内存分配在一起执行。

    数组元素类型 数组名 = new 数组元素类型[数组元素的个数];

    int month[] = new int[12];

    给一维数组赋值

    数组可以与基本数据类型一样进行初始化操作,也就是赋初值,数组的初始化可分别初始化数组中的每一个元素。

    数组的初始化有以下3种形式:

    int a[] = {1,2,3}; // 第一种方式

    int[] b = new int[]{4,5,6}; // 第二种方式

    int c[] = new int[3]; // 第三种方式

    c[0] = 7;// 第一个元素赋值

    c[1] = 8;// 第二个元素赋值

    c[2] = 9;// 第三个元素赋值

    获取数组的长度

    有时候数组分配空间我们没有指明这个时候就可以通过arr.lenth来获取长度。

    int a[] = {1,2,3};

    System.out.println(a.length);

    常见错误

    33d35b24fc86e4a7345ba1326ebf1683.png

    二维数组

    二维数组常用于表示二维表,第一个元素代表元素所在的行,第二个下标代表元素所在的列。

    创建二维数组

    声明二维数组有两种方式:

    数组元素类型 数组名字[][];

    int tdarr1[][];

    数组元素类型[ ][ ] 数组名字;

    int[][] tdarr2;

    和一维数组一样,二维数组在声明的时候没有分配内存空间,同样要使用new关键字来分配内存 ,然后才可以访问元素。

    分配内存有两种方式:

    int a[][];

    a = new int[2][3];// 直接分配行列

    int b[][];

    b = new int[2][];// 先分配行,不分配列

    b[0] = new int[2];// 给第一行分配列

    b[1] = new int[2];// 给第二行分配列

    注意:创建二维数组可以只声明行的长度,而不声明列的长度。行的长度是必须得声明的!!!

    给二维数组赋值

    int tdarr1[][] = {{1,3,5},{4,6,7}}; // 第一种方式

    int tdarr2[][] = new int[][] {{1,3,5},{4,6,7}}; // 第二种方式

    int tdarr3[][] = new int[2][3];// 第三种方式

    tdarr3[0] = new int[] {1,2,3};// 给第一行分配一个一维数组

    tdarr3[1][0] = 63;// 给第二行第一列赋值为63

    tdarr3[1][0] = 10;// 给第二行第一列赋值为10

    tdarr3[1][0] = 7;// 给第二行第一列赋值为7

    从这个例子可以看出,二维数组每一个元素也是一个数组,所以第一种直接赋值方式,在大括号内还有大括号,因为每一个元素都是一个一维数组;第二种使用new的方法与一维数组相似。第三种比较特殊,在分配内存空间后,还有两种赋值方式,给某一行直接赋值一个一维数组,或者给某一行的每一个元素分别赋值。

    二维数组的使用场景

    public static void main(String[] args) {

    char arr[][] = new char[4][];// 创建二维数组,数组长度(行)为4

    arr[0] = new char[] { '春', '眠', '不', '觉', '晓' };// 为每一行赋值

    arr[1] = new char[] { '处', '处', '闻', '啼', '鸟' };

    arr[2] = new char[] { '夜', '来', '风', '雨', '声' };

    arr[3] = new char[] { '花', '落', '知', '多', '少' };

    System.out.println("---横版---");

    for (int i = 0; i < 4; i++) {// 循环4行

    for (int j = 0; j < 5; j++) {// 循环5列

    System.out.print(arr[i][j]);// 输出数组中的元素

    }

    if (i % 2 == 0) {

    System.out.print(",");// 如果是1,3句输出逗号

    } else {

    System.out.print("。");// 如果是2,4句输出句号

    }

    // i行结束则换行(注意在哪个循环内执行)

    System.out.println();

    }

    System.out.println();

    System.out.println("---竖版---");

    for (int j = 0; j < 5; j++) {// 列变行

    for (int i = 3; i >= 0; i--) {// 行变列,反序输出

    System.out.print(arr[i][j]);// 输出数组中的元素

    }

    System.out.println();// 换行

    }

    // 第5行单独输出标点符号

    System.out.println("。,。,");// 输出最后的标点

    }

    运行效果:

    557059753f0fcb47fb3f2337c8b19089.png

    多维数组

    比一维数组维数高的叫多维数组,理论上二维数组也属于多维数组,Java也支持三维数组,四维等多维数组。创建其他多维数组的方法与二维数组类似。

    int a1[][][] = new int[3][4][5];// 创建三维数组

    char b1[][][][] = new char[6][7][8][9];// 创建四维数组

    不规则数组

    java中支持不规则数组,例如二维数组中,不同行的元素个数可以不同:

    int a[][] = new int[3][];// 创建二维数组,指定行数,不指定列数

    a[0] = new int[5];// 第一行分配5个元素

    a[1] = new int[3];// 第二行分配3个元素

    a[2] = new int[4];// 第三行分配4个元素

    输出不规则二维数组中的所有元素代码示例:

    public static void main(String[] args) {

    int a[][] = new int[3][];// 创建二维数组,指定行数,不指定列数

    a[0] = new int[] {52,64,85,12,3,64};// 第一行分配6个元素

    a[1] = new int[] {41,99,2};// 第二行分配3个元素

    a[2] = new int[] {285,61,278,2};// 第三行分配4个元素

    for (int i = 0; i < a.length; i++) {

    System.out.print("a[" + i +"]中有" + a[i].length + "个元素,分别是:");

    for (int tmp : a[i]) {//foreach循环输出元素

    System.out.print(tmp + " ");

    }

    System.out.println();

    }

    }

    输出结果:

    003c56ef0662f652c9f395dca9818b09.png

    数组的基本操作

    遍历一维数组很简单,也很好理解,遍历二维数组需要使用双层for循环,通过数组的length属性可获得数组的长度。

    遍历数组

    代码示例:

    public static void main(String[] args) {

    int b[][] = new int[][] {{1},{2,3},{4,5,6}}; // 定义二维数组

    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();

    }

    }

    输出结果:

    962235abd57af7900a772090b5855159.png

    本语法有一个语法需要掌握:如果有一个二维数组a[][],a.length返回的是数组的行数,a[0].length返回的是第一行的列数量。同理,a[n]返回的是第n+1行的列数量,由于二维数组可能是不规则数组,因此在遍历二维数组的时候最好使用length属性控制循环次数。

    填充和批量替换数组元素

    数组中的元素定义完成后,可通过Arrays类的静态方法fill()方法来对数组中的元素进行分配,起到填充和替换的效果,fill()方法可以将制定的int值分配给int型数组的每个元素。

    语法如下:

    Array.fill(int[] a , int value)

    a:要进行元素分配的数组

    value:要存储数组中所有元素的值

    代码示例:

    public static void main(String[] args) {

    int arr[] = new int[5];

    arr[0] = 9;

    Arrays.fill(arr, 8);

    for (int i = 0; i < arr.length; i++) {

    System.out.println("第" + i + "个元素是: " + arr[i]);

    }

    }

    输出结果:

    337fba93953c83e0a37122bd2b557675.png

    难点解答

    为什么数组索引从0开始?

    这是继承了汇编语言的传统,从0开始便于计算机做二进制运算和查找。

    多维数组的长度

    length属性只能表示一个一维数组的长度,二维数组使用的时候其实是将二维数组转为了 “一维数组[一维数组]” 的形式,即一维数组元素仍然是一个一维数组。

    展开全文
  • 自定义可变长度二维数组

    千次阅读 2015-11-04 14:13:12
    体积重量 一级分类是确定个数 一级分类的二级分类是可变的 设计一个这种数据模式的二维数组 private void initData(){ specificationList=DataView.modelList; //一级分类的个数 System.out.println("model...
  • 数组操作 二维数组 可变参数 数组操作: 漂亮打印 冒泡排序: ​ 将数组中的第一个位置的数据依次后面的进行比较 ​ 如果前者比后者大 此时交换位置 可以将最大的数字排在末尾 二分搜索: ​ 前提:操作的数组必须是...
  • c# 可变二维数组Here, the task is to declare a two dimensional array – where number rows ... 在这里,任务是声明一个二维数组-其中给出了行数,列数是可变长度 : To declare such array, we use the follo...
  • 1.概述 ①Java语言中的数组是一种引用数据类型。不属于墓本数据类型。数组的父类是 object ②数组实际上是一个容器,可以同时容纳多个元素。(数组是一个数据的集合。...⑦数组的分类:一维数组、二维数组、三
  • 今天在java超话中看到了一个学妹,咨询了一个问题,问题如下: ...第一个解释在浏览器中搜索了java二维数组,为什么行不可以省略: (1)数组的长度是固定的,使用数组前必须指定长度; (2)二维
  • java二维数组详解!

    2021-04-17 08:06:34
    /* java 二维数组的概念 使用方法!1.什么是二维数组?答案:数组的数组! 他的每一个元素都是数组!二维数组是(存储一维数组的)一维数组。2.如何定义?(以二维数组为列)int arr[][]=new int[a] [b]; ||int [][]arr=...
  • 数组的一些特性java数组要求所有的元素具有相同的数据类型,因此一个数组只能存储一种数据类型的数据,而不能存储多种数据类型的数据。比如你这个数组是int类型的数组,那这个数组就不能存储boolean float...
  • 声明:本栏目所使用的素材都是凯哥...先申请一个String字符串,然后最里面输入要存储的值,使用for循环申请变量i,i小于String数组长度(.Length),然后打印String数组的第i个值就可以取出里面的数组。例题2:也...
  • Java基础(五)——数组 一、数组的定义 1、概念 概念:一组连续的存储空间,存储多个相同数据类型的值。 2、数组的一些属性 只能存储相同类型的数据。 长度固定 拥有索引(下标),从0开始,最大值为长度-1 3、...
  • 数组的说明: 数组是相同类型的数据的集合存储形式,数组存储形式是相同类型的若干个数据,按照添加元素的顺序有一定的先后次序,在数组中,数组中的每一个数据称之为一个... 数组的索引从 0 开始,到数组长度(数
  • Arrays工具类使用帮助文档:1.61.8作用:主要用于对数组进行排序,查找,填充,比较等的操作Arrays工具类存在于java.util包下,所以使用的第一步就是导包:import java.util.Arrays;注意1:如果在同一个Java文件中...
  • java中二维数组行列长度

    千次阅读 2020-02-01 12:26:04
    array.length是针对java中数组的,length是数组的一个属性,用来表示数组的长度;...数组行数为:array.length //二维数组用length属性表示行数 数组列数为:array[0].length或者array[1].length //某...
  • String位于java.lang包中,Java程序默认导入java.lang包下的所有类 String又称作不可变字符序列 (2) 请你列举出String类的五个常用方法? A、char charAt(int index)返回字符串中第index个字符 B、Boolean ...
  • Java基础——Arrays工具类、二维数组

    千次阅读 2018-08-09 13:04:27
    Arrays工具类、二维数组 1.Arrays工具类 2.方法传参和返回值 3.可变参数 4.二维数组 1.1 二维数组的概念 1.2 二维数组的定义 1.3 数组的初始化 1.4 二维数组的访问 5.调试和文档注释 第一节 Arrays工具类 ...
  • 思考这个问题的时候,我们不凡复习下不错的分查找,它依赖数组随机访问的特性,其查找时间复杂度为O(log n)。如果我们将元素放入链表中,分查找还好使吗?这就是今天和大家分享的跳表 理解跳表 假设使用单链表...
  • java二维数组初始化(动态,静态)

    千次阅读 2018-03-13 09:03:04
    int[][] a=new int[][]{{1,2},{3,4},{5,6,7,8,9},{}}; System.out.println(a....//4,表示数组的行数 System.out.println(a[0].length);//2,表示对应行的长度 System.out.println(a[1].length);//2 System...
  • Java二维数组

    2021-06-18 14:33:33
    Java中一般没有二维数组的概念,而二维数组就是类似于在一维数组中存放一个数组,注意数组的长度不能改变。 一、二维数组的建立 定义二维数组时第一个括号内代表有几个一位数组,第二个括号代表一维数组的长度。 ...
  • java数组长度可变

    2021-03-16 00:26:24
    Java数组练习题(带答案)_IT... 2) 数组复制时,"......Java 数组练习题(带答案) 一 填空题 1) 数组的元素通过 下标 来访问,数组 Array 的长度为 Array、length 。 2) 数组复制时,=将一个数组的 引用 传递给另........
  • 大家知道,数组(平常你们最爱的new[]这些)是静态的,数组被初始化之后,数组长度就不能再改变了。ArrayList是可以动态改变大小的。那么,什么时候使用Array(数组),什么时候使用ArrayList?答案是:当我们不知道...
  • 全班40人,按照定义变量的思维,需要定义40个double类型的数据变量,每次从40个变量中找一个变量,操作很麻烦,java中可以定义以和数据类存放40个人的成绩,使用数据类型存储​数组定义:它是相同数...
  • 16. Java二维数组可以

    千次阅读 2016-03-19 01:59:30
    因为本质上是 一维数组挂一维数组,一维数组可以不定长 int[][] a = new int[][]{{1,2,3},{1},{2,4,5}};
  • 1、一维数组1.1 数组的声明和初始化声明方式:String str[]; //不建议使用String[] str2;静态初始化:初始化和赋值同时进行String[] str = new String[]{“aa”,”bb”}String[] str2 = {“aa”,”bb”} //声明和...
  • 先复习一下基本概念:可变参数其实是数组参数的语法糖,你在可变参数的位置传入数组,效果是一样的。实践上,这两种写法有不同的应用场景。以非数组的形式传入,就是硬编码参数的个数,也就是你在写这行代码的时候,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,806
精华内容 7,522
关键字:

java可变长度二维数组

java 订阅