java -- 二维数组

Posted _泡泡

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java -- 二维数组相关的知识,希望对你有一定的参考价值。

基本概念

在Java中二维数组被看作数组的数组,即二维数组为一个特殊的一维数组,其每个元素又是一个一维数组。
Java 并不直接支持二维数组,但是允许定义数组元素是一维数组的一维数组,以达到同样的效果。

创建及初始化

// 创建方式和数组相似 第一个中括号表示行,第二个中括号表示列
// 表示创建了拥有3个子数组且每个子数组都有两个元素的二维数组
int[][] arrarr1 = new int[3][2];
// 表示创建了拥有3个子数组, 但子数组全部为null 的二维数组
int[][] arrarr2 = new int[3][];
// 静态初始化, 创建二维数组并进行赋值操作
int[][] arrarr3 = new int[][]1,23,23,56,1,1,4,7;
int[][] arrarr4 = 1,23,23,56,1,1,4,7;
// 特殊写法!!!
int[] x, y[]; // 此处 x是一维数组, y是二维数组

元素的获取

// 获取单个元素
System.out.println(arrarr3[1][2]);
// 1

// 查看arrarr2数组的元素
for (int[] arr : arrarr2) 
    System.out.println(arr);

/*
获取到arrarr2中数组的地址值
null
null
null
*/

for (int[] arr: arrarr3) 
    for (int a: arr) 
        System.out.print(a + " ");
    
    System.out.println();

/*
1 23 
23 56 1 
1 4 7 
*/

为子数组赋值

arrarr2[0] = new int[2];
arrarr2[1] = new int[4];
arrarr2[2] = new int[1];
for (int[] arr : arrarr2) 
    for (int tmp : arr) 
        System.out.print(tmp + "\\t");
    
    System.out.println();

/*
0    0    
0    0    0    0    
0    
*/

练习

二维数组打印一个10行的杨辉三角

/*
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
...
第一行一个元素, 第n行有n个元素
每行的第一个元素和第二个元素都是1
从第三行开始 对于非第一个和最后一个元素的元素:
*/
yanghui[i][j] = yanghui[i - 1][j - 1] + yanghui[i - 1][j];
int[][] yangHui = new int[10][];
for (int i = 0; i < 10; i++) 
    yangHui[i] = new int[i + 1];
    for (int j = 0; j < yangHui[i].length; j++) 
        if (j == 0 || j == yangHui[i].length - 1) 
            yangHui[i][j] = 1;
         else 
            yangHui[i][j] = yangHui[i - 1][j - 1] + yangHui[i - 1][j];
        
    

for (int i = 0; i < yangHui.length; i++) 
    for (int j = 0; j < yangHui[i].length; j++) 
        System.out.print(yangHui[i][j] + "\\t");
    
    System.out.println();

假设有一个矩阵为5行5列,该矩阵是由程序随机产生的100以内数字排列而成。下面使用二维数组来创建该矩阵,代码如下:

public class Test
    public static void main(String[] args)
        int[][] matrix = new int[5][5];

        for(int i = 0; i < matrix.length; i++) 
            for(int j = 0; j < matrix[i].length; j++) 
                matrix[i][j] = (int)(Math.random() * 100);
            
        

        for(int i = 0; i < matrix.length; i++) 
            for(int j = 0; j < matrix[i].length; j++) 
                System.out.print(matrix[i][j] + "\\t");
            
            System.out.println();
        
    

java中二维数组和ArrayList的相互转换

用java程序写两个方法,分别实现把二维数组转换为ArrayList和把ArrayList转换为二维数组.
最好提供源代码,谢谢!!今天之内给出解决方案者将追加20分.

帮你写好了第一个 当然 第二是同样的道理 你是学JAVA 的不用我再写了 要不然那样太依赖了 反而学不好
import java.util.*;

public class ArrayListTest

public static void main(String[] args)
String[][] str = "list0", "list2" , "list3", "list4" ,
"list5", "list6" , "list7", "list8" ;
ArrayList<String> list = new ArrayList<String>();
for (int i = 0; i < str.length; i++)
for (int j = 0; j < str[i].length; j++)
list.add(str[i][j]);


Iterator it = list.iterator();
while (it.hasNext())
System.out.println(it.next());


参考技术A 原来写的一个练习,和这个异曲同工。自己看看吧
/*
编写一个方法,返回一个double类型的数组;
数组中的元素通过解析字符串中的元素获得;
如:
"1,2;3,4,5;6,7,8"
对应的数组为:
d[0,0]=1.0
d[0,1]=2.0
d[1,0]=3.0
d[1,1]=4.0
d[1,2]=5.0
d[2,0]=6.0
d[2,1]=7.0
d[2,2]=8.0
*/
import
java.util.*;
public
class
splitstring

public
static
void
main(string[]
args)

system.out.println("please
input
your
string!");
scanner
sc
=
new
scanner(system.in);
string
str
=
sc.nextline();
system.out.println();
string[]
sfirst
=
str.split(";");
double[][]
d;
d
=
new
double[sfirst.length][];
for(int
i=0;i<sfirst.length;i++)

string[]
ssecond
=
sfirst[i].split(",");
d[i]
=
new
double[ssecond.length];
for(int
j=0;j<ssecond.length;j++)

d[i][j]
=
double.parsedouble(ssecond[j]);


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

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

system.out.print(d[i][j]+"
");

system.out.println();


以上是关于java -- 二维数组的主要内容,如果未能解决你的问题,请参考以下文章

java怎么定义一个二维数组

java使用foreach语句遍历二维数组如何实现?

(java) ArrayList 分解,结果转换成 二维数组!!!

java二维数组 按某列排序

怎么用java取出出指定条件二维数组的子数组

java中怎样给Boolean型二维数组赋值?