本文共 500 个字数,平均阅读时长 ≈ 2分钟
练习一
定义一个int型的一维数组,包含10个元素,分别赋一些随机整数,然后求出所有元素的最大值,最小值,总和,平均值并输出出来。要求:所有随机数都是两位数:[10,99]
提示: 求[a,b]范围内的随机数: (int)(Math.random() * (b - a + 1)) + a;
code代码
/**
* 数组练习:定义一个int型的一维数组,包含10个元素,分别赋一些随机整数,然后求出所有元素的最大值,最小值,总和,平均值
* 并输出出来。
* 要求:所有随机数都是两位数:[10,99]
* 提示: 求[a,b]范围内的随机数: (int)(Math.random() * (b - a + 1)) + a;
*/
public class ArrayExer {
public static void main(String[] args) {
//动态创建数组并随机赋值整数
int[] arr = new int[10];
for (int i = 0; i < arr.length; i++) {
arr[i] = (int) (Math.random() * 89) + 10;
}
//定义和计算最大值、最小值、总和、平均值
int min = arr[0], max = arr[0], sum = 0, avg = 0;
String arrStr = "";
for (int i = 0; i < arr.length; i++) {
arrStr = arr[i] + " " + arrStr;
if(arr[i] > max) max = arr[i];
if(arr[i] < min) min = arr[i];
sum += arr[i];
}
avg = sum / arr.length;
//输出结果
System.out.println("数组元素:" + arrStr);
System.out.println("最大值:" + max);
System.out.println("最小值:" + min);
System.out.println("总和:" + sum);
System.out.println("平均值:" + avg);
}
}
运行效果
练习二
输出杨辉三角如下:
code代码
/*
输出杨辉三角
*/
public class YangHui {
public static void main(String[] args) {
//动态定义二位数组
int[][] arr = new int[10][];
//定义外部数组
for (int i = 0; i < arr.length; i++) {
arr[i] = new int[i + 1];
}
//给数组赋值
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
//如果是第一行和最后一行,值为1
if (j == 0 || j == arr[i].length - 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++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
}
}
输出结果
回形数
回形数:从键盘输入一个整数(1~20),则以该数字为矩阵的大小,把1,2,3...n*n 的数字按照顺时针螺旋的形式填入其中。
例如: 输入数字2,则程序输出:
1 2
4 3
输入数字
1 2 3
8 9 4
7 6 5
00 01 02 12 22 21 20 10 11
输入数字4,则程序输出:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
code代码
import java.util.Scanner;
/*
回形数:从键盘输入一个整数(1~20),则以该数字为矩阵的大小,把1,2,3...n*n 的数字按照顺时针螺旋的形式填入其中。
例如: 输入数字2,则程序输出:
1 2
4 3
输入数字
1 2 3
8 9 4
7 6 5
00 01 02 12 22 21 20 10 11
输入数字4,则程序输出:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
*/
public class ArrayExer2 {
public static void main(String[] args) {
//从键盘获取一个整数
int n = 0;
Scanner scanner = new Scanner(System.in);
while (n < 1 || n > 20) {
System.out.println("请输入1~20之间的整数");
n = scanner.nextInt();
}
//动态定义数组
int[][] array = new int[n][n];
//给数组赋值 00 01 02 03 13 23 33 32 31 30 20 10 11 12 22 21
//k为方向k=1向右 k=2向下 k=3向左 k=4向上
int k = 1;
//m为总的数值
int m = 1;
//i,j为数组的行和列
int i = 0;
int j = 0;
for (;m <= 16; m++) {
//向右
if(k == 1) {
//当j小于列数且该位置为空则赋值
if (j < n && array[i][j] == 0) {
array[i][j++] = m;
} else {
//方向改变
k = 2;
i++;
j--;
m--;
}
} else if(k == 2) {
if (i < n && array[i][j] == 0) {
array[i++][j] = m;
} else {
k = 3;
i--;
j--;
m--;
}
} else if(k == 3) {
if (j >= 0 && array[i][j] == 0) {
array[i][j--] = m;
} else {
k = 4;
i--;
j++;
m--;
}
} else if(k == 4) {
if (i >= 0 && array[i][j] == 0) {
array[i--][j] = m;
} else {
k = 1;
i++;
j++;
m--;
}
}
}
//输出数组
System.out.println();
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
System.out.print(array[i][j] + "\t");
}
System.out.println("");
}
//关闭资源
scanner.close();
}
}
评论 (0)