内容纲要
182讲二维数组的细节注意事项、二维数组练习,章节作业梳理,专业和编程
作业
- 第四题有点难度。但是可以接受
package main.dayone;
public class Homework{
public static void main(String[] args){
//升序数组,要求插入一个元素,该数组顺序依然是升序,例如:
//{10,12,45,90},添加23 后,数组为{10,12,23,45,90}
int[] arr = {10,12,45,90};
/*
思路分析:
1.先定义了arr 这个数组。
2.要想添加一个数并在数组中排序,则需要先讲arr 数组的长度+1。
3.通过for 循环使用冒泡法改良将arr[?] 插入到数组当中(当中可能需要定义一个临时存放变量保存将要迭代的数。)
*/
//方法创建一个新的数组比arr长一个的。
//
int[] arrNew = new int[arr.length + 1];//创建一个比arr数组长1 的数组。
for(int i = 0;i < arr.length;i++){
arrNew[i] = arr[i];
}
// arrNew = arr;//赋值,将arr数组的值赋给arrNew = {10,12,45,90,0}
arrNew[arrNew.length - 1] = 23;
for(int j = 0;j < arrNew.length;j++) {
for (int i = 0; i <= arrNew.length-2; i++) {
if (arrNew[i] > arrNew[i + 1]) {
int temp = arrNew[i];
arrNew[i] = arrNew[i + 1];
arrNew[i + 1] = temp;
}
}
}
for(int num : arrNew){
System.out.print(" " + num);
}
}
}
//这个方法不行,我做的。这个。。重新冒泡法而已//
//老韩的方法 我稍微变动了以下,老韩直接一个for循环定义2个循环变量,达到目的
package main.dayone;
//老韩的方法
public class Homework{
public static void main(String[] args){
//升序数组,要求插入一个元素,该数组顺序依然是升序,例如:
//{10,12,45,90},添加23 后,数组为{10,12,23,45,90}
int[] arr = {10,12,45,90};
//思路先定位确定新插入的数字在什么位置,然后再扩容。
//定位1.int insertNum = 23; 遍历数组arr
//2.寻找到arr[?] >= insertNum 位置,标记为 index = ?;
//3.未能找到insertNum
int insertNum = 23;
int index = -1;
for(int i = 0;i < arr.length;i++){
if(insertNum <= arr[i]){
index = i;
break; //赶紧退出,不然下一个循环会让index 有问题。
}else{
index = arr.length;
}
}
//数组扩容
//思路分析:1.在index 定位前面的数组全部移入到新的扩容数组里面去。在index 后的数组则往后面+1 位
//2.
int[] arrNew = new int[arr.length + 1];
for(int j = 0;j < index;j++){
arrNew[j] = arr[j];
}
arrNew[index] = insertNum;
for(int i = index+1;i < arrNew.length;i++){
arrNew[i] = arr[i-1];
}
for(int num : arrNew){
System.out.print("\t" + num);
}
System.out.println("\n" +"index = " + index);
}
}
/* 数组扩容部分
for(int i = 0,int j = 0;i < arrNew.length;i++){//通过循环变量i来遍历arrNew[]
if(index != i){
arrNew[i] = arr[j]; //这个方法很巧妙,! 无论在前还是在后都可以添加到arrNew中
j++;
}else{
arrNew[i] = insertNum; //妙啊!!!!妙蛙种子吃了妙脆角进了米奇妙妙屋,妙到家了!
}
}
*/
- 第五题
package main.dayone;
public class ArrayRandomHomework5 {
public static void main(String[] args) {
/*
随机生成10个整数(1 - 100 的范围)保存到数组,
并倒序打印以及求平均值、求最大值、和最大值的下标、并查找里面是否有8
*/
int[] arr = new int[10];
for(int i = 0;i < arr.length;i++){
arr[i] = (int) (100*Math.random());
}
//倒叙打印数组 直接吧最小值传给后面,这个思路最简单
float total = 0;
int index = 0;
int max = 0;
int x = 0; //这个x用来判断是否有8 的
for(int j = 0;j < arr.length;j++){
total += arr[j]; //求出了总和
//判断又没哟8
if(arr[j] == 8){
System.out.println("数组中有8");
}else{
x = 1;
}
if(arr[j] > max){
max = arr[j];
index = j;
}
//倒叙
for(int i = 0;i < arr.length-1;i++) {
if (arr[i] < arr[i + 1]) {
int temp;
temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
}
System.out.println("最大值下标index = " + index);
if(x == 1){
System.out.println("数组中没有8");
}
float average = total/10; //平均数
System.out.println("平均值为:" + average);
for(int j = 0;j < arr.length;j++){
System.out.print(" " + arr[j]);
}
}
}
章节内容梳理
不做笔记了。