天天看點

java二維數組使用幾個下标_Java二維數組以及多元數組的定義及應用

一、二維數組以及多元數組

1、二維數組的定義:

?在一維數組中定義每一個元素也是一個數組元素,這樣的數組稱為”二維數組“

?多元數組就是在一維數組上再次定義二維數組或三位數組等。

?一維數組定義int [] array={1,2,3}

//定義三個長度的二維數組,其數組的每一個元素是一個一維數組

int [][] arrays={{},{},{}};

或者

int [][] arrays=new int [3][2];//等号右邊的左邊[]中表示二維數組的長度,其中2可以省略,3不能省略

//注意:等号左邊有幾個[]就表示幾維

java二維數組使用幾個下标_Java二維數組以及多元數組的定義及應用

//1、定義二維數組

int [][] array;

//定義時給二維數組指派 3個長度的二維數組裡面的一維數組的長度不一定相等

int [][] array2={{1,2,3},{4,5},{7,8}}

//定義時隻指定大小,不給定初始值

int [][]array3=new int[3][];//等價{{},{},{}}

//array3[0][0]=1;//指派時 空指針異常,因為裡面的一維數組是空的

//定義一個3個長度的二維數組,裡面的元素長度是2

int array4[][]=new int[3][2];

//給元素指派

array4[0][0]=1;

//輸出二維數組中的所有元素

for(int i=0;i

//System.out.println(array4[i]);

for(int j=0;j

System.out.println(array[i][j]);

}

}

二、二維數組的應用

1、定義5*5的矩陣,計算最大值最小值

public class Test{

public static void main(String[] args) {

//定義一個5*5的二維數組

int [][] array=new int[5][5];

//定義最大值,并初始化

int max=0;

//定義最小值,并初始化

int min=0;

//為二維數組中的每一個元素賦上一個0-100的整數值,并周遊輸出二維數組

for (int i = 0; i

for (int j = 0; j

array[i][j]=(int)(Math.random()*100);

System.out.print(array[i][j]+"\t");

}

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

}

//将數組中的第一個元素指派給max

max =array[0][0];

for (int i = 0; i

for (int j = 0; j

//如果數組中元素大于max,則将元素指派給max

if(array[i][j]>=max){

max=array[i][j];

}

}

}

//輸出二維數組中的最大值

System.out.println("最大值為:"+max);

//将數組中的第一個元素指派給min

min =array[0][0];

for (int i = 0; i

for (int j = 0; j

//如果元素小于min,則将元素指派給min

if(array[i][j]<=min){

min=array[i][j];

}

}

}

//輸出二維數組中的最小值

System.out.println("最小值為:"+min);

}

}

2、五子棋遊戲

public class Test{

//定義一個字元串型20*20的二維數組

static String [][] qipan=new String[20][20];

public static void main(String[] args) {

System.out.println("------------------------------五子棋遊戲------------------------------");

//初始化棋盤

for (int i = 0; i

for (int j = 0; j

qipan[i][j]="+";

}

}

printQipan();

System.out.println("遊戲開始:");

Scanner sc=new Scanner(System.in);

while(true) {

System.out.println("請玩家(黑棋)落子:");

System.out.print("請輸入棋子的行數(1-20):");

int num1 = sc.nextInt();

System.out.print("請輸入棋子的列數(1-20):");

int num2 = sc.nextInt();

if (num1 <= 0 || num1 > 20 || num2 <= 0 || num2 > 20 ) {

System.out.println("落子超出棋盤邊界,請重新落子!");

continue;

} else {

if( qipan[num1 - 1][num2 - 1] != "+"){

System.out.println("該位置已有棋子,請重新落子!");

continue;

}else{

qipan[num1-1][num2-1]="?";

}

}

//白棋落子

int row=0;

int col=0;

// System.out.println("白棋思考中...");

while(true){

row=(int)(Math.random()*20);

col=(int)(Math.random()*20);

if(qipan[row][col]=="+"){

break;

}

}

qipan[row][col]="●";

//列印棋盤

printQipan();

//判斷輸赢

if(judge()){

System.out.println(s+"赢了");

break;

}

}

}

//列印棋盤

public static void printQipan(){

for (int i = 0; i

for (int j = 0; j

System.out.print(qipan[i][j]+"\t");

}

System.out.println();

}

}

//判斷輸赢的方法

static String s="";

public static boolean judge(){

boolean flag=false;

for (int i = 0; i

for (int j = 0; j

if(qipan[i][j]=="?"||qipan[i][j]=="●"){

//判斷橫向

if(j<16&&

qipan[i][j]==qipan[i][j+1]

&&qipan[i][j]==qipan[i][j+2]

&&qipan[i][j]==qipan[i][j+3]

&&qipan[i][j]==qipan[i][j+4]){

s=qipan[i][j];

flag=true;

break;

}

//判斷右斜下

else if(i<16&&j<16&&qipan[i][j]==qipan[i+1][j+1]

&&qipan[i][j]==qipan[i+2][j+2]

&&qipan[i][j]==qipan[i+3][j+3]

&&qipan[i][j]==qipan[i+4][j+4]){

s=qipan[i][j];

flag=true;

break;

}

//判斷縱向

else if(i<16&&qipan[i][j]==qipan[i+1][j]

&&qipan[i][j]==qipan[i+2][j]

&&qipan[i][j]==qipan[i+3][j]

&&qipan[i][j]==qipan[i+4][j]){

s=qipan[i][j];

flag=true;

break;

}

//判斷左斜下

else if(i<16&&j>3&&qipan[i][j]==qipan[i-1][j-1]

&&qipan[i][j]==qipan[i-2][j-2]

&&qipan[i][j]==qipan[i-3][j-3]

&&qipan[i][j]==qipan[i-4][j-4]){

s=qipan[i][j];

flag=true;

break;

}

}

}

}

return flag;

}

}

拓展:利用二分法查找數組中的元素

public class Test {

public static void main(String[] args) {

// 1、指定一個20個長度的數組 随機數

int [] array=new int[20];

for (int i = 0; i

array[i]=(int)(Math.random()*100);

}

//輸出數組中的每一個元素

System.out.println("數組中的元素為:");

System.out.println(Arrays.toString(array));

// 2、排序 (升序)

Arrays.sort(array);

//輸出排序後的數組

System.out.println("排序後的數組為:");

System.out.println(Arrays.toString(array));

// 3、輸入一個目标數

Scanner sc=new Scanner(System.in);

System.out.print("請輸入想要查找的數字:");

int num=sc.nextInt();

// 3、比較

//定義 最小值下标 最大值下标 中間值下标 查找的目标下标

//最小值小标

int minIndex=0;

//最大值下标

int maxIndex=array.length-1;

//中間值下标

int middle;

//目标值下标

int index=-1;

//計數器

int count=0;

while(minIndex<=maxIndex){

count++;

middle=(minIndex+maxIndex)/2;

if(num

maxIndex=middle-1;

}else if(num>array[middle]){

minIndex=middle+1;

}else {

index=middle;

break;

}

}

if(index!=-1){

System.out.println("目标已找到");

System.out.print("共查詢次數:"+count+"\n");

System.out.print("目标數下标為:"+index);

}else{

System.out.println("目标不存在");

}

}

}

原文:https://www.cnblogs.com/hss945/p/13797668.html