首页 > 编程知识 正文

数组的下标从什么开始,如何输出数组的下标

时间:2023-05-06 10:14:50 阅读:41579 作者:4430

一.二维排列及多维排列

1、二维数组定义:

? 用一维数组定义各元素也是数组元素,这样的数组称为“二维数组”

? 多维数组是指在一维数组中重新定义二维数组和3位数组等。

? 一维数组定义int [ ] array={ 1,2,3 }

//定义数组各要素为一维数组的3个长度的二维数组

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

或者

int [][] arrays=new int [3][2]; //等号右边的左边[]表示二维数组的长度。 这里,2可以省略,3可以省略

//注意:等号左侧有几个[]表示几个维度

//1,定义二维数组

int[][]天线阵;

//定义时给二维数组分配了3个长度的二维数组中的一维数组的长度不一定相等

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

//只指定大小进行定义,不提供初始值

int [ ] [ ]阵列3=new int [3] [ ]; //等价{}、{}、{}}

//array3[0][0]=1; //赋值时空指针异常。 因为里面的一维数组是空的

//定义三个长度的二维数组,其中元素的长度为2

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

//为元素赋值

array4[0][0]=1;

//输出二维数组中的所有元素

for(intI=0; I

//system.out.println(Array4[I];

for(intj=0; Jj

system.out.println(Array[I][j];

}

}

二.二维序列的应用

定义1、5*5的矩阵,计算最大值最小值

公共类测试{

publicstaticvoidmain (字符串[ ] args ) {

定义//5*5的二维数组

int [ ] [ ]阵列=new int [5] [5];

//定义并初始化最大值

int max=0;

//定义最小值并初始化

int min=0;

//为二维数组的每个元素指定0-100的整数值,以遍历输出二维数组

for(intI=0; I

for(intj=0; Jj

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

system.out.print (array [ I ] [ j ] 't ' );

}

System.out.println (; //换行

}

//将数组的第一个元素指定给max

max=array[0][0];

for(intI=0; I

for(intj=0; Jj

//如果数组中的元素大于max,则将元素指定给max

if(array[I][j]=max ) {

max=array[i][j];

}

}

}

//输出二维数组的最大值

System.out.println ('最大值为' max );

//将数组的第一个元素指定给min

min=array[0][0];

for(intI=0; I

for(intj=0; Jj

//如果元素小于min,则将元素分配给min

if(array(I ) j )=min ) {

min=array[i][j];

}

}

}

//输出二维数组中的最小值

System.out.println ('最小值为' min );

}

}

2、五子棋游戏

公共类测试{

//定义字符串类型20*20的二维数组

staticstring [ ] [ ] qipan=new string [ 20 ] [ 20 ]

publicstaticvoidmain (字符串[ ] args ) {

system.out.println---------------- -五子棋游戏

//初始化棋盘

for(intI=0; I

for(intj=0; Jj

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、比较

//定义 最小值下标 最大值下标 中间值下标 查找的目标下标

/**

* 最小下标 0

* * 最大下标 length-1

* *

* * 循环条件: 最小值小标<=最大值下标

* 中间下标: middle = (最小值+最大值)/2

* * 如果中间值比目标大 说明 在左边 改变最大值下标 = 中间值下标-1

* * 如果中间值比目标小 说明 在右边 改变最小值小标 = 中间值下标+1

* * 如果相等 就break

* * 一直这样比较 结束的条件是什么

*/

//最小值小标

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

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。