java二维数组基础知识详解
作者:进击的菜鸟子 发布时间:2023-03-28 11:10:54
1. 查找
1) 顺序查找 SeqSearch.java
2) 二分查找【二分法,放在算法讲解】
2. 顺序查找
有一个数列:白眉鹰王、金毛狮王、紫衫龙王、青翼蝠王猜数游戏:从键盘中任意输入一个名称,判断数列中是否 包含此名称【顺序查找】 要求: 如果找到了,就提示找到,并给出下标值。
import java.util.Scanner;
public class Test21
{
public static void main(String[] args)
{
//有一个数列:白眉鹰王、金毛狮王、紫衫龙王、青翼蝠王猜数游戏:
//从键盘中任意输入一个名称,判断数列中是否 包含此名称【顺序查找】
// 要求: 如果找到了,就提示找到,并给出下标值。
// 思路分析 1. 定义一个字符串数组
// 2. 接收用户输入, 遍历数组,逐一比较,如果有,则提示信息,并退出
//定义一个字符串数组
Scanner myScanner = new Scanner(System.in);
String[] names = {"白眉鹰王", "金毛狮王", "紫衫龙王", "青翼蝠王"};
System.out.println("请输入名字");
String findname = myScanner.next();
//遍历数字组
int index = -1;//判断找没找到
for(int i=0;i<names.length;i++)
{
if(findname.equals(names[i]))//使用equals比较字符串是相等
{
System.out.println("恭喜你找到了"+findname);
System.out.println("下标是"+i);
index = i;
break;
}
}
if(index==-1)//没找到
{
System.out.println("没找到"+findname);
}
}
}
3. 二分查找
仅当了解,后面会详细讲解
import java.util.Scanner;
public class Test21
{
public static void main(String[] args)
{
Scanner myScanner = new Scanner(System.in);
int arr[]={1,2,3,4,5,6,7,8,9,10};
int left=0;
int right=arr.length-1;
System.out.println("请输入要查找的数字");
int n =myScanner.nextInt();
while(left<=right)
{
int mid = (left+right)/2;
if(arr[mid]<n)
{
left=mid+1;
}
else if(arr[mid]>n)
{
right=mid-1;
}
else
{
System.out.println("找到啦,下标是"+mid);
break;
}
}
if(left>right)
{
System.out.println("没找到");
}
}
}
4. 多维数组
4.1 二维数组 175
请用二维数组输出如下图形
0 0 0 0 0 0
0 0 1 0 0 0
0 2 0 3 0 0
0 0 0 0 0 0
import java.util.Scanner;
public class Test21
{
public static void main(String[] args)
{
int arr[][]={{0,0,0,0,0,0},{0,0,1,0,0,0},{0,2,0,3,0,0},{0,0,0,0,0,0}};
//输出二维数组
for(int i=0;i<arr.length;i++)
{
//arr[i]表示二维数组的第i+1个元素,比如arr[0]表示二维数组的第一个元素
//arr[i].length表示得到的对应的一维数组的长度
for(int j=0;j<arr[i].length;j++)
{
System.out.print(arr[i][j]+" ");//输出一维数组
}
System.out.println();//换行
}
}
}
4.2 二维数组细节
0 0 0 0 0 0
0 0 1 0 0 0
0 2 0 3 0 0
0 0 0 0 0 0
1. 从定义形式上看 int[][]
2. 可以这样理解,原来的一维数组的每个元素是一维数组, 就构成二维数组
3. 二维数组的个数System.out.println("二维数组的元素个数"+arr.length);//4
4. 二维数组的每个元素是一维数组, 所以如果需要得到每个一维数组的值 还需要再次遍历
5. 如果我们要访问第 (i+1)个一维数组的第 j+1 个值 arr[i][j];
举例 访问 3, =》 他是第 3 个一维数组的第 4 个值 arr[2][3]
System.out.println("第 3 个一维数组的第 4 个值=" + arr[2][3]); //3
5. 二维数组的使用方式 176
1) 语法: 类型[][] 数组名=new 类型[大小][大小]
2) 比如: int a[][]=new int[2][3]
//二维数组的使用
public class Test21
{
public static void main(String[] args)
{
int arr[][]=new int[2][3];
arr[1][1]=8;
//遍历arr
for(int i=0;i<arr.length;i++)
{
for(int j=0;j<arr[i].length;j++)
{
System.out.print(arr[i][j]+" ");
}
System.out.println();//换行
}
}
}
6. 二维数组的动态初始化
1.先声明:类型 数组名[][]; 再定义(开辟空间) 数组名 = new 类型[大小][大小]
例如
int arr[][];//声明
arr=new int[2][3];//定义
2.动态初始化-列数不确定 178
例
看一个需求:动态创建下面二维数组,并输出
i = 0: 1
i = 1: 2 2
i = 2: 3 3 3
public class Test21
{
public static void main(String[] args)
{
int arr[][]=new int[3][];//列不确定可以不写 创建 二维数组,一共有 3 个一维数组,但是每个一维数组还没有开数据空间
for(int i=0;i<arr.length;i++)
{
arr[i]=new int[i+1];//给一维数组开辟空间
for(int j=0;j<arr[i].length;j++)
{
arr[i][j]=i+1;//给一位数组元素赋值
System.out.print(arr[i][j]+" ");
}
System.out.println();
}
}
}
7. 二维数组的静态初始化 179
定义 类型 数组名[][] = {{值 1,值 2..},{值 1,值 2..},{值 1,值 2..}}
使用即可 [ 固定方式访问 ]
比如:
int[][] arr = {{1,1,1}, {8,8,9}, {100}};
解读
1. 定义了一个二维数组 arr
2. arr 有三个元素(每个元素都是一维数组)
3. 第一个一维数组有 3 个元素 , 第二个一维数组有 3 个元素, 第三个一维数组有 1 个元素
public class Test21
{
public static void main(String[] args)
{
int[][] arr = {{1,1,1}, {8,8,9}, 100};//100没有带{},必报错
}
}
8. 二维数组练习 180
8.1 int arr[][]={{4,6},{1,4,5,7},{-2}}; 遍历该二维数组,并得到和
//int arr[][]={{4,6},{1,4,5,7},{-2}}; 遍历该二维数组,并得到和
public class Test21
{
public static void main(String[] args)
{
int arr[][]={{4,6},{1,4,5,7},{-2}};
int sum=0;
for(int i=0;i<arr.length;i++)
{
for(int j=0;j<arr[i].length;j++)
{
sum+=arr[i][j];
System.out.print(arr[i][j]+" ");
}
System.out.println();
}
System.out.println("sum="+sum);
}
}
来源:https://blog.51cto.com/u_15784725/6064031
![](https://www.aspxhome.com/images/zang.png)
![](https://www.aspxhome.com/images/jiucuo.png)
猜你喜欢
- 1、简介单例模式使⽤场景:业务系统全局只需要⼀个对象实例,⽐如发号器、 redis 连接对象等。Spring IOC容器中的 Bean 默认
- 先来看一个很简单的核心图片缩放方法:public static Bitmap scale(Bitmap bitmap, float scal
- 前言在创建表格时,如果表格内容出现跨页显示的时候,默认情况下该表格的表头不会在下一页显示,在阅读体验上不是很好。下面分享一个方法如何在表格跨
- 实现目标:使用springMVC前端控制器,跳转到WEB-INF的templates下面的前端页面图示1.目录结构2.创建一个maven的w
- 本文实例为大家分享了java实现学生成绩管理系统的具体代码,供大家参考,具体内容如下/* *@copyright by LzyRa
- spring-MVC实现简单的登录功能,供大家参考,具体内容如下今天我学习了spring-MVC实现简单的登录功能,本篇博客就讲解如何使用s
- 一、简介(1)、MySQL是一个关系型数据库系统,是如今互联网公司最常用的数据库和最广泛的数据库。为服务端数据库,能承受高并发的访问量。(2
- 本文实例讲述了Android实现在一个activity中添加多个listview的方法。分享给大家供大家参考,具体如下:listview的i
- 定义BroadcastReceiver,“广播接收者”的意思,顾名思义,它就是用来接收来自系统和应用中的广播。在Android系统中,广播体
- 现在我们上网会用百度或者谷歌搜索信息,当我们在输入框里输入一两个字后,就会自动提示我们想要的信息,这种效果在Android 是通过
- RMI 介绍RMI (Remote Method Invocation) 模型是一种分布式对象应用,使用 RMI 技术可以使一个 JVM 中
- 一、前言Hello,又见面了,今天分享如何使用Unity制作计算器,难度中等,可以用来学习,或者当成其他项目的小组件导入。当然,也可以导出来
- springboot默认读取的配置文件名字是:“application.properties”和&a
- 本文实例为大家分享了Java NIO实现多人聊天室的具体代码,供大家参考,具体内容如下1. 服务器端代码ChatServer类:packag
- 实体对象之间相互传值,如:VO对象的值赋给Entity对象,是代码中常用功能,如果通过get、set相互赋值,则很麻烦,借助工具类BeanU
- 前言有位朋友,某天突然问东哥:在 Java 中,防止重复提交最简单的方案是什么?这句话中包含了两个关键信息,第一:防止重复提交;第二:最简单
- CancellationTokenCancellationToken有一个构造函数,可以传入一个bool类型表示当前的Cancellatio
- 在Android开发中我们经常会用到网络连接功能与服务器进行数据的交互,为此Android的SDK提供了Apache的HttpClient来
- 通过java的File类创建临时文件,然后在程序退出时自动删除临时文件。下面将通过创建一个JFrame界面,点击创建按钮在当前目录下面创建t
- 目录认识@Import注解搭建项目结构用于测试@Import用法最佳搭档 - @Import通用形式总结认识@Import注解先看一下源码@