/**
* 求数组中的最大值
*/
@Test
public void test14(){
//定义一个数组 参赛的选手
int [] nums={50,20,30,80,100,90};
//定义一个擂主
int max=0;
//循环打擂
for (int i = 0; i < nums.length; i++) {
//如果发现 数组中的元素 大于 max 就让当前的元素的值给max
if (nums[i]>max) {
max=nums[i];
System.out.println("历届的擂主::"+max);
}
}
System.out.println("最终的擂主是:"+max);
}
/**
* 求数组中的最小值
*/
@Test
public void test15(){
//定义一个数组 参赛的选手
int [] nums={50,200,30,80,100,90};
//定义一个最小值 默认是 数组中的第一个元素
int min=nums[0];
//循环打擂
for (int i = 0; i < nums.length; i++) {
//如果发现数组中的元素小于min 把元素的值给min
if (nums[i]<min) {
min=nums[i];
}
}
System.out.println("最小的数值是:"+min);
}

1.打擂法求最大值和最小值

public class Array01 {
/**
* 数组:一组相同数据类型的集合! 在内存中开辟一连串的空间!
* 和String一样都是 引用数据类型!
* 数据类型 [] 数组名称;
* 数组的下标=数组的长度-1
*/
public static void main(String[] args) {
// 01.声明数组 创建了一个火车厢
int[] nums;
// 02.分配空间 给火车厢创建座位
nums = new int[5];
// 03.赋值 旅客入座
nums[0] = 50;
// 04.使用 nums.length(获取数组的长度)
for (int i = 0; i < nums.length; i++) {
System.out.println("数组nums的第" + (i + 1) + "个位置的数据是:" + nums[i]);
}
} // 声明数组的同时给数组赋值
@Test
public void test01() {
/**
* 给你说 创建车厢的同时,告诉你里面有多少个座位
*
* int [] nums;
* nums={ 1, 2, 3, 4, 5 }; 这种写法是错误的!
*/
int[] nums = { 1, 2, 3, 4, 5 };
// 找到下标为3的数据
System.out.println(nums[3]);
} @Test
public void test02() {
// int[] nums = new int[5]; 可以 常用的方式
int[] nums = new int[] { 1, 2, 3, 4, 5 };
// 找到下标为3的数据
System.out.println(nums[3]);
} /**
* 计算5位学生的平均分
*/
@Test
public void test03() {
// 01.创建一个长度为5的double类型的数组 保存学生成绩
double[] scores = new double[5];
// 02.循环给学生成绩赋值
Scanner scanner = new Scanner(System.in);
double sum = 0; // 保存总成绩
for (int i = 0; i < scores.length; i++) {
System.out.println("请输入第" + (i + 1) + "位同学的成绩");
scores[i] = scanner.nextDouble();
// 每个学生成绩需要加到sum中
sum += scores[i];
}
System.out.println("学生的总成绩是:" + sum);
System.out.println("学生的平均分是:" + (sum / scores.length));
} /**
* 有一个数列:8,4,2,1,23,344,12
循环输出数列的值
求数列中所有数值的和
猜数游戏:从键盘中任意输入一个数据,判断数列中是否包含此数
*/
@Test
public void test04() {
// 01.创建int类型数组
int nums[] = { 8, 4, 2, 1, 23, 344, 12 };
// 定义变量保存总和
int sum = 0;
// 02.循环输出数列的值
for (int i = 0; i < nums.length; i++) {
System.out.print(nums[i] + ",");
sum += nums[i];
}
System.out.println("\n数组中数值的总和:" + sum);
// 猜数游戏:从键盘中任意输入一个数据,判断数列中是否包含此数
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个数字:");
int num = scanner.nextInt();
// 定义标记 来记录是否中奖
boolean flag = false;
for (int i = 0; i < nums.length; i++) {
if (num == nums[i]) {
flag = true;
break;
}
}
if (flag) { // 判断标记
System.out.println("恭喜您!中大奖!");
} else {
System.out.println("没有找到......");
}
} /**
* 以表格的形式输出5笔购物金额及总金额
*/
@Test
public void test05() {
double[] pays = new double[5];
double sum = 0; // 总金额
Scanner scanner = new Scanner(System.in);
System.out.println("请输入本月的消费记录:");
for (int i = 0; i < pays.length; i++) {
System.out.println("请输入" + (i + 1) + "次的消费金额:");
pays[i] = scanner.nextDouble(); // 给数组中每一个元素赋值
// 求和
sum += pays[i];
}
// 输出消费详情 遍历(从集合中取得数据)
System.out.println("序号\t\t金额");
for (int i = 0; i < pays.length; i++) {
System.out.println((i + 1) + "\t\t" + pays[i]);
}
System.out.println("总金额:" + sum);
} /**
* Arrays :数组的操作类
*/
@Test
public void test06() {
double[] pays = new double[5];
Scanner scanner = new Scanner(System.in);
System.out.println("请输入本月的消费记录:");
for (int i = 0; i < pays.length; i++) {
System.out.println("请输入" + (i + 1) + "次的消费金额:");
pays[i] = scanner.nextDouble(); // 给数组中每一个元素赋值
}
// 没有排序的遍历
for (int i = 0; i < pays.length; i++) {
System.out.println(pays[i]);
}
System.out.println("*************升序之后***************");
Arrays.sort(pays);// 升序排列
for (int i = 0; i < pays.length; i++) {
System.out.println(pays[i]);
}
}
}

2.数组的基本使用

/**
* 操作数组的工具类!
*/
public class Arrays02 {
// equals(arr1, arr2) :比较两个数组的内容和长度 是否一致
@Test
public void testEquals() {
int[] nums1 = { 10, 20, 30, 50 };
int[] nums2 = nums1;
int[] nums3 = { 10, 20, 30 };
System.out.println("nums1与nums2比较:" + Arrays.equals(nums1, nums2));
System.out.println("nums1==nums2比较:" + (nums1 == nums2));
} // sort(arr):对数组中的元素进行升序的排列
@Test
public void testSort() {
int[] nums = { 10, 50, 30, 20 };
Arrays.sort(nums);
for (int i = 0; i < nums.length; i++) {
System.out.println(nums[i]);
}
} /**
* toString :把一个数组变成字符串
* [10, 50, 30, 20] 集合toString的结果!
*/
@Test
public void testToString() {
int[] nums = { 10, 50, 30, 20 };
System.out.println(Arrays.toString(nums));
} /**
* fill(arr,val):将arr数组中的所有元素都赋值成了val
*/
@Test
public void testFill() {
int[] nums = { 10, 50, 30, 20 };
System.out.println(Arrays.toString(nums));
Arrays.fill(nums, 100);
System.out.println(Arrays.toString(nums));
} /**
* copyOf(arr,length):将数组arr复制成一个长度为length的新数组!
*/
@Test
public void testCopyOf() {
int[] nums = { 10, 50, 30, 20 };
int[] nums1 = Arrays.copyOf(nums, 3);
System.out.println(Arrays.toString(nums1));
} /**
* binarySearch(arr,val):查询val在arr数组中的下标!
* 必须先升序排列! Arrays.sort(arr)!!!!
*/
@Test
public void testBinarySearch() {
int[] nums = { 10, 50, 30, 20 };
Arrays.sort(nums); // 10 20 30 50
System.out.println(Arrays.binarySearch(nums, 50));
}
}

3.操作数组的工具类

// 打擂法 求数组中的最大值
@Test
public void test01() {
int[] nums = { 10, 50, 30, 200 };
// 默认的擂主
int max = nums[0];
// 让max依次和nums中的每一个元素进行比较
for (int i = 0; i < nums.length; i++) {
if (max < nums[i]) {
max = nums[i];
}
}
System.out.println("最大值:" + max);
} /**
* 插入算法
*/
@Test
public void test02() {
// 先定义一个有序的数组
int[] nums = new int[5];
nums[0] = 100;
nums[1] = 90;
nums[2] = 80;
nums[3] = 10;
Scanner scanner = new Scanner(System.in);
System.out.println("请您输入一个插入的数据:");
int num = scanner.nextInt();
// 01.找到需要插入数据的位置
int index = nums.length;
// 02.循环找到位置
for (int i = 0; i < nums.length; i++) {
if (num > nums[i]) {
index = i; // 下标
break;
}
}
// 03.元素后移
for (int j = nums.length - 1; j > index; j--) {
nums[j] = nums[j - 1]; // 依次后移
}
// 04.插入数据
nums[index] = num;
System.out.println("插入数据的下表是:" + index);
System.out.println(Arrays.toString(nums));
}

4.打擂法求最值

public class CharSort03 {

    /**
* 字符的逆序输出
*/
public static void main(String[] args) {
char[] chars = { 'a', 'f', 'c', 'g', 'z', 'y' };
// 升序
Arrays.sort(chars);
System.out.println("升序之后的字符===》" + Arrays.toString(chars));
// 逆序
System.out.println("逆序之后的字符====");
for (int i = chars.length - 1; i >= 0; i--) {
System.out.print(chars[i]);
}
} @Test
public void test01() {
// char类型的默认值: '\u0000'
char[] chars = { 'a', 'c', 'f', 'g', 'y', 'z', '\u0000' }; // 必须有顺序 System.out.println(chars.length);
char c = 'x'; // 需要插入的字符
int index = chars.length;
// 找下标
for (int i = 0; i < chars.length; i++) {
if (c < chars[i]) {
index = i;
break;
}
}
// 元素后移
for (int j = chars.length - 1; j > index; j--) {
chars[j] = chars[j - 1];
}
// 插入数据
chars[index] = c;
for (int i = 0; i < chars.length; i++) {
System.out.print(chars[i]);
}
}
}

5.字符的逆序输出

public class DoubleArray04 {
public static void main(String[] args) {
int[] clazz = new int[3]; // 保存班级
int[] students = new int[5]; // 保存学生
} @Test
public void test01() { // 声明的同时开辟空间
int[][] nums = new int[3][5]; // 3个班级各5名学生
} @Test
public void test02() { // 先声明 再 开辟空间
int[][] nums;
nums = new int[3][5]; // 3个班级各5名学生
} @Test
public void test03() { // 声明 开辟空间的同时赋值
int[][] nums = { { 1, 2, 3, 4, 5 }, { 1, 2, 3, 4, 5 },
{ 1, 2, 3, 4, 5 } };
System.out.println(nums.length);// 3个班级各5名学生
} @Test
public void test04() {
int[][] nums = new int[3][5]; // 3个班级各5名学生
// 第二个班级的第三个学生
nums[1][2] = 50;
} @Test
public void test05() {
int[][] nums = { { 1, 2, 3 }, { 10, 20, 30 }, { 100, 200, 300 } }; /**
* nums.length 车厢数
* nums[i].length 车厢中的座位数
* 双重循环:
* 外层循环执行一次,内存循环执行一遍!
*/
for (int i = 0; i < nums.length; i++) {
System.out.println("进入了第" + (i + 1) + "个车厢**********");
if (i == 2) {
break; // 跳出当前循环体
}
for (int j = 0; j < nums[i].length; j++) {
if (j == 2) {
break; // 跳出当前循环体
}
System.out.println(nums[i][j]);
}
}
} /**
* 所有的引用数据类型如果没有实例化(开辟空间)! 不能使用!
* 因为引用数据类型的默认值 是 null!
*/
@Test
public void test06() { int[][] nums = new int[5][];
System.out.println(nums.length);
nums[0] = new int[5]; // 开辟空间
nums[1] = new int[6]; nums[0][0] = 50; // 使用
nums[0][1] = 60;
nums[0][2] = 70;
nums[0][3] = 80;
System.out.println(nums[0].length);
System.out.println(nums[1].length);
}
}

6.多重数组

/**
* 冒泡排序 升序的排列
*/
@Test
public void test17(){
int [] nums={1,5,8,2,3,5};
/**
* 外层循环控制轮数 数组的长度-1
* 外层循环每执行一次, 内层循环执行一遍
*/
for (int i = 0; i < nums.length-1; i++) {
System.out.println("这是第"+(i+1)+"轮===================");
//内层循环 数组的长度-1-i
for (int j = 0; j < nums.length-i-1; j++) {
System.out.println("比较了第"+(j+1)+"次");
}
}
} /**
* 冒泡排序 升序的排列
*/
@Test
public void test18(){
int [] nums={10,5,8,2,3,50,5000,500,30,65,98};
/**
* 外层循环控制轮数 数组的长度-1
* 外层循环每执行一次, 内层循环执行一遍
*
* 无论多少个数字相比
* 都是相邻的两个数字进行比较,
* 数值小的元素会交换前面的位置
* 代码:
* 外层循环 : 数组长度-1
* 内层循环: 数组长度-1-i
*
*/
for (int i = 0; i < nums.length-1; i++) {
//内层循环 数组的长度-1-i
for (int j = 0; j < nums.length-i-1; j++) {
if (nums[j]>nums[j+1]) { //相当于 第一个元素大于下一个元素 ,那么需要和下个元素换位置
//等量转换
int temp=nums[j];
nums[j]=nums[j+1];
nums[j+1]=temp;
}
}
}
//遍历数组中的元素
for (int i : nums) {
System.out.println(i);
}
}

7.冒泡排序

public class TestArrays {
/**
* Arrays.equals(数组1,数组2)
* 01.首先比较的而是数组的长度是否一致
* 02.比较数组中的元素
*/
@Test
public void test01(){
int nums1[]={10,20,30};
int nums2[]={10,20,30};
int nums3[]={10,30,20};
System.out.println(nums1==nums2); //比较内存地址 false
//equals
System.out.println(nums1.equals(nums2)); //底层还是比较内存地址 false
System.out.println(Arrays.equals(nums1, nums2)); //true
//System.out.println(Arrays.equals(nums1, nums3)); //false
} /**
* [L@4a7fca02 :数组toString()的结果
*/
@Test
public void test02(){
int nums1[]={10,20,30};
System.out.println(nums1);
//把数组转换成字符串
System.out.println(Arrays.toString(nums1));
} @Test
public void test03(){
int nums1[]={10,20,30};
//把数组转换成字符串
System.out.println(Arrays.toString(nums1));
//copyOf(数组,长度)
int[] nums2 = Arrays.copyOf(nums1, 10);
System.out.println(Arrays.toString(nums2));
} @Test
public void test04(){
int nums1[]={10,20,30};
System.out.println("nums1之前的值:"+Arrays.toString(nums1));
//fill(数组,值)
Arrays.fill(nums1, 500);
System.out.println("nums1fill之后的值:"+Arrays.toString(nums1));
} /**
* binarySearch(数组,值)
* 查询值 在数组中下标的位置
*/
@Test
public void test05(){
int nums1[]={100,200,10,20,30};
//01.必须先排序 升序
Arrays.sort(nums1);
//02.查询20的下标 [10,20,30,100,200]
System.out.println(Arrays.binarySearch(nums1, 300));
}
}

8.Arrays工具类的使用

    /**
* 二维数组: 数组中的元素 又是一个数组!
*/
@Test
public void test06(){
//01.创建二维数组
int[][] nums=new int[3][3]; //int [][] nums2={{1,2,3},{4,5,6},{7,8,9}};
nums[0][0]=5;
nums[0][1]=6;
nums[0][2]=7; nums[1][0]=5;
nums[1][1]=6;
nums[1][2]=7; nums[2][0]=5;
nums[2][1]=6;
nums[2][2]=7;
} @Test
public void test07(){
//01.创建二维数组
int [][] nums={{1,2,3,4},{4,5,6},{7,8}}; System.out.println(nums[0]);//{1,2,3}
System.out.println(nums[0][1]);//
System.out.println("nums的长度:"+nums.length);
System.out.println("第2个数组中下标是2的元素"+nums[1][2]);
} /**
* 循环打印出数组所有的元素
*/
@Test
public void test08(){
//01.创建二维数组
int [][] nums={{1,2,3,4},{4,5,6},{7,8}};
for (int i = 0; i < nums.length; i++) { //外层
System.out.println("这是2维数组中的第"+(i+1)+"个数组");
for (int j = 0; j < nums[i].length; j++) {//内层
System.out.println("元素的值:"+nums[i][j]);
}
}
}

9.二维数组

    /**
* 已知有3个班级各3名学员,请使用
*二维数组计算各个班级的总成绩
*/ @Test
public void test10(){
//01.创建二维数组
int [][] nums=new int[3][3];
Scanner scanner=new Scanner(System.in);
//定义一个数组变量 存储每个班级的成绩
int sum[]=new int[nums.length];
//02.让用户循环给数组 赋值
for (int i = 0; i < nums.length; i++) {
System.out.println("请输入第"+(i+1)+"个班级的学生成绩:");
for (int j = 0; j < nums[i].length; j++) {
System.out.println("请输入第"+(j+1)+"个成绩:");
nums[i][j]=scanner.nextInt(); //学生成绩赋值
sum[i]+=nums[i][j]; //每个班级的总成绩
}
}
System.out.println("学生的成绩***********************");
for (int i = 0; i < nums.length; i++) {
for (int j = 0; j < nums[i].length; j++) {
System.out.println("第"+(i+1)+"个班级的第"+(j+1)+"个学生的成绩:"+nums[i][j]);
}
}
System.out.println("班级的成绩***********************");
for (int i = 0; i < sum.length; i++) {
System.out.println("第"+(i+1)+"个班级的总成绩是:"+sum[i]);
}
} @Test
public void test011() {
//有3个班各3名学生某门课程的成绩,
//01.定义一个2维数组
int [][] scores=new int[3][3];
Scanner scanner=new Scanner(System.in);
//02.循环给学生赋值
for (int i = 0; i < scores.length; i++) {
System.out.println("请输入第"+(i+1)+"班级学生的成绩:===========");
for (int j = 0; j < scores[i].length; j++) {
System.out.println("请输入第"+(j+1)+"个学生的成绩:");
scores[i][j]=scanner.nextInt();
}
}
System.out.println("学生的成绩统计如下******************");
// 如何计算3个班各自的总成绩? for (int i = 0; i < scores.length; i++) {
// 每个班级都清零
int sum = 0;
for (int j = 0; j < scores[i].length; j++) {
sum += scores[i][j];
}
System.out.println("第" + (i + 1) + "班级学生的成绩总和===" + sum);
}
}

10.二维数组小练习

java基础09 数组的使用的更多相关文章

  1. Java基础-反转数组

    /** java基础,如何将一个数组反转,思考方法采用使用临时变量的情况下,将第一个元素与第二个元素进行反转,需要定义两个索引,一个记录数组的第一个元素与最后一个元素,将其两两交换* */public ...

  2. Java基础之 数组详解

    前言:Java内功心法之数组详解,看完这篇你向Java大神的路上又迈出了一步(有什么问题或者需要资料可以联系我的扣扣:734999078) 数组概念 同一种类型数据的集合.其实数组就是一个容器. 数组 ...

  3. java基础(十) 数组类型

    1. 数组类简介   在java中,数组也是一种引用类型,即是一种类. 我们来看一个例子,理解一下数组类: public static void main(String[] args) { Class ...

  4. java 基础概念 -- 数组与内存控制

    问题1: Java在声明数组的过程中,是怎样分配内存的? 在栈内存中 建一个数组变量,再在堆内存中 建一个 数组对象.至于详细的内存分配细节,还得看 该初始化是 数组动态初始化 还是 数组静态初始化. ...

  5. Java基础:数组的声明,循环,赋值,拷贝。

    数组的声明 一般有两种形式的声明: int[] a; int a[]; 这两种声明都没错,但是大多数都使用第一种声明,因为变量名是独立的,不带任何符号. 声明一个数组,并没有将a真正的初始化为一个数组 ...

  6. Java基础总结--数组

    ---数组的定义---组织存储一组数据1.存放相同类型数据的集合--就是一种容器本质上变量也是一种容器--区别就是只存储了一个数据的容器--面对容器,而不是分散的数据eg.买一盘鸡蛋--蛋托其实就是容 ...

  7. java 基础知识-数组的7种算法(排序、求和、最值、遍历...)

    遍历 遍历就是把这个数组的每个元素 显示出来 遍历的方法就是先定义这个数组的大小,然后用FOR循环来完成数组,例如 double[] score = new double[5]; Scanner in ...

  8. Java基础之数组类型

    对于Java,前面的一些基础概念不是很想写,看了看还是从数组开始写吧(毕竟数组是第一个引用类型,相对复杂一点),我也是学了JAVA不是很久,目前看完了JAVA的基础视频,还有JAVA疯狂讲义这本书的大 ...

  9. 黑马程序员——JAVA基础之数组

    ------- android培训.java培训.期待与您交流! ---------- 数组: 数组的定义: 数组是相同类型数据的集合, 描述的是相同类型的若干个数据按照一定的先后顺序排列组合而成,其 ...

随机推荐

  1. Tensorflow - Tutorial (7) : 利用 RNN/LSTM 进行手写数字识别

    1. 经常使用类 class tf.contrib.rnn.BasicLSTMCell BasicLSTMCell 是最简单的一个LSTM类.没有实现clipping,projection layer ...

  2. Atitit.vod 视频播放系统 影吧系统的架构图 架构体系 解决方案

    Atitit.vod 视频播放系统 影吧系统的架构图 架构体系 解决方案 1. 运行平台:跨平台 android ios pc mobile 1.1. -------------前端 界面------ ...

  3. C# 使用IP端口网络打印图片

    /// <summary> /// POSPrinter的摘要说明. /// 此类处理网络打印,使用了IP端口. /// </summary> public class Net ...

  4. 李洪强iOS经典面试题30-一个区分度很大的面试题

    李洪强iOS经典面试题30-一个区分度很大的面试题 考察一个面试者基础咋样,基本上问一个 @property 就够了: @property 后面可以有哪些修饰符? 线程安全的: atomic,nona ...

  5. CCNA2.0笔记_路由分类

    直连路由:当在路由器上配置了接口的IP地址,并且接口状态为up的时候,路由表中就出现直连路由项 静态路由:静态路由是由管理员手工配置的,是单向的. 默认路由:当路由器在路由表中找不到目标网络的路由条目 ...

  6. struts解决form提交的中文参数乱码问题

    根据struts的工作原理,原文摘自<Java Web 开发实战经典> 在运行一个JSP页面前,会调用指定的ActionForm中的reset()方法,进行表单元素的初始化 因此,在相应的 ...

  7. CSRF学习笔记之CSRF的攻击与防御以及审计【00x3】

    Hight.php完整代码如下: <?php if (isset($_GET['Change'])) { // Turn requests into variables $pass_curr = ...

  8. Unix系统编程()通用模型以外的操作ioctl

    之前学习到的都是通用的IO模型,现在要学的是一个ioctl系统调用,ioctl为执行文件和设备提供了一种多用途机制. int ioctl(int fd, int request, - /*argp*/ ...

  9. 【★】深入BGP原理和思想【第…

    前言:学思科技术我想说,浅尝辄止,不是天才千万别深钻.和我研究高等数学一样,越深入就会发现越多的问题与不合理之处.尤其对于IT界,算法的最终解释权还是掌握在老外手中,所以对于有些细节,我们" ...

  10. js版in_array函数

    //检测数组中是否存在某个字符串 function in_array(search,array){ for(var i in array){ if(array[i]==search){ return ...