一.利用数组找出一组数的最大最小值
1.求最大值
/**
* 求数组中的最大值
*/
// @Test
public void test4() {
int arr[] = { 12, 35, 15, -45, 15, 82 };
// 定义max变量并把arr[0]赋值给max
int max = arr[0];// 假定第一个元素是最大值
// 外层遍历数组
for (int i = 0; i < arr.length; i++) {
// 每个数进行比较 大于max 则赋值给max
if (arr[i] > max) {
max = arr[i];
}
}
System.out.println("最大值为" + max);
}
2.最小值
/**
* 求数组的最小值
* */
//@Test
public void test5() {
int[] arr = { 61, 76, 23, -12, 332, 86 };
// 定义min变量并把arr[0]赋值给max
int min = arr[0];// 假定第一个元素是最小值
int sum = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[i] < min) {//如果arr[i]比min还要小 则赋值给min
min = arr[i];
}
sum += arr[i];
}
System.out.println("最小值是" + min);
System.out.println("和是" + sum);
}
二.实现数组的倒序输出
/**
* 数组的反转:数组中的元素点到顺序,
* 例如:1,2,3,4,5,6
* arr[0] =1
*
*后来: 6,5,4,3,2,1
* arr[0] = 6
*/
@Test
public void test7() {
//实现数组最远端 的数字进行交换
int arr[] = {1,2,3,4,5,6};
System.out.print("倒序之前-->");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]);
}
System.out.println();
//定义两个变量
int min = 0,max = arr.length-1;
for (; min<max; min++,max--) {
int temp = arr[min];
arr[min] = arr[max];
arr[max] = temp;
}
System.out.print("倒序之后-->");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]);
}
}
运行结果
三.查询数组
1.查询某数在该数组出现的次数
/**
* 查询某数在该数组中出现的次数n int arr[] = {1,2,3,4,5,6,7,8,2,3,5,3,2,5,6,7,83,2,3,1,25};
*/
// @Test
public void demo2() {
int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 2, 3, 5, 3, 2, 5, 6, 7, 83, 2, 3, 1, 25 };
int num = 2;//也可以设置键盘输入
int count = 0;//定义一个计数的变量
for (int i = 0; i < arr.length; i++) {
if (arr[i] == num) {
count++;
}else{
system.err.println(num+"不在该数组中!");
}
}
System.out.println(num + "出现了" + count + "次");
}
运行结果如下
2.查询某数在该数组中出现的第一次出现的索引
/**
* 查询某数在该数组中出现的第一次出现的索引 int arr[] =
* {1,2,3,4,5,6,7,8,2,3,5,3,2,5,6,7,83,2,3,1,25};
*/
@Test
public void demo3() {
//定义一个数组
int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 2, 3, 5, 3, 2, 5, 6, 7, 83, 2, 3, 1, 25 };
//给一个数组中的值 或者设置键盘输入一个值都可以
int num = 2;
// 初始值给-1,数组下标从0开始
int index = -1;
//遍历这个数组
for (int i = 0; i < arr.length; i++) {
if (arr[i] == num) {
// 下标赋给一个变量
index = i;
break;
}
}
// 完善判断
if (index != -1) {
System.out.println(num + "第一次出现的索引为" + index);
} else {
System.out.println(num+"不在这个数组中");
}
}
运行结果如下
四.java数组的杨辉三角
杨辉三角分为直角杨辉三角和等腰杨辉三角,搞清楚其构成原理问题自然解决
下面我们来分析一下
1.直角杨辉三角
不难看出
从第三行开始除去左面第一列 中间的数 = (同一列上一行的数)+(前一列上一行的数)
如果我们定义一个二维数组
例如:
arr[2][3] = arr[2-1][3] + arr[2-1][3-1];
所以:
arr[i][j] = arr[i-1][j] + arr[i-1][j-1];
则三角两条边的一就是每一列每一行的第一个数都是1
代码如下
/**
* 直角杨辉三角 利用二维数组
*/
// @Test
public void demo1() {
while (1 == 1) {
Scanner sc = new Scanner(System.in);
System.out.println("您想打印几行的杨辉三角请输入:");
int a = sc.nextInt();
int[][] arr = new int[a][a];
for (int i = 0; i < arr.length; i++) {
// 由于只是给杨辉三角内的位置赋值,所以是j<=i
for (int j = 0; j <= i; j++) {
// 根据规律,使用if else 赋值
if (j == 0 || j == i) { // 打印三角两边的 1
arr[i][j] = 1;
} else { // 除两边以外 打印内容
arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
}
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
}
}
运行结果如下
2.直等腰杨辉三角
跟直角的杨辉三角大同小异
我们只需要把两侧空白的三角形 分开打印出来就可以了
代码如下
/**
* 等腰的杨辉三角 利用二维数组
*/
@Test
public void demo2() {
while (1 == 1) {
Scanner sc = new Scanner(System.in);
System.out.println("您想打印几行的杨辉三角请输入:");
int a = sc.nextInt();
// 把值赋给数组中
int[][] arr = new int[a][a];
for (int i = 0; i < arr.length; i++) {
// 由于只是给杨辉三角内的位置赋值,所以是j<=i
for (int j = 0; j <= i; j++) {
// 根据规律,使用if else 赋值
if (j == 0 || j == i) { // 打印三角两边的 1
arr[i][j] = 1;
} else { // 除两边以外 打印内容
arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
}
}
}
// 打印空白部分的三角形
for (int i = 0; i < arr.length; i++) {
int num = arr.length - i; //每一行空白部分越来越少
for (int j = 0; j <= num; j++) { // 打印空白部分
System.out.print(" ");
}
for (int k = 0; k <= i; k++) { // 打印内容
System.out.print(arr[i][k] + " ");
}
System.out.println();
}
}
}
运行结果如下