例题一、创建一个长度为6的int型数组,要求数组元素的值都在1~30之间,且是随机赋 值。同时,要求每一个值都不相同。
public static void main(String[] args) {
//1.声明动态数组并初始化数组
int[] arr = new int[6];
//2.给数组每一个元素赋值
label:
for (int i = 0; i < arr.length; i++) {
//数组元素的值都在1~30之间,且是随机赋值
arr[i] = (int) (Math.random() * 30 + 1);
//3.判断每一个值都不相同 (此时不能j < arr.length,因为 arr 还没有赋值,会死循环)
for (int j = 0; j < i; j++) {
if (arr[i] == arr[j]) {
i--;//值相等,重新给i赋值
continue label;//此处也可以用 break;
}
}
System.out.print(arr[i] + " ");
}
}
例题二、杨辉三角
package com.www.test;
import java.util.Scanner;
/**
* 数组练习题
*/
public class MyTest {
public static void main(String[] args) {
//1.声明动态数组并初始化数组
int[][] yanghui = new int[10][];
//2.给每一个元素赋值
for (int i = 0; i < yanghui.length; i++) {
//赋值每行应该有几个元素 比如:i为0时,第一行; i+1为1即第一行有一个元素
yanghui[i] = new int[i + 1];
//2.1给首末尾添加元素
yanghui[i][0] = 1; //每一行的第一个元素
yanghui[i][i] = 1; //每一行的最后一个元素
//2.2 给非首末元素赋值
for (int j = 1; j < yanghui[i].length - 1; j++) {
//从第三行第二个元素开始计算,该值为上一行与之对应的值和该对应的前一个值的和
yanghui[i][j] = yanghui[i - 1][j - 1] + yanghui[i - 1][j];
}
}
//3.遍历数组
for (int i = 0; i < yanghui.length; i++) {
for (int j = 0; j < yanghui[i].length; j++) {
System.out.print(yanghui[i][j] + " "); //此位置不换行
}
System.out.println();
}
}
}
例题三、回形数
package com.www.test;
import java.util.Scanner;
/**
* 数组练习题
*/
public class MyTest {
public static void main(String[] args) {
/**
* 例题三、回形数
* huixing[minY][x]代表的是坐标,而count是数值(每次循环都自加,即1、2、3、4、5......)
* X轴相当于行,Y轴相当于列。如:
* minY = 0;huixing[minY][x]:第一行的每个数字,也就是numLen长度,依次赋值
*/
Scanner scan = new Scanner(System.in);
System.out.println("请输入一个数字:");
int numLen = scan.nextInt();
int[][] huixing = new int[numLen][numLen];
int count = 0; //要显示的数据
int maxX = numLen - 1; //x轴最大下标
int maxY = numLen - 1; //y轴最大下标
int minX = 0; //x轴最小下标
int minY = 0; //y轴最小下标
while (minX <= maxX) { //直到X横轴线最小下标比最大下标还大时就退出循环 说明已经把值赋到最后一个了
for (int x = minX; x <= maxX; x++) { //向右 从最小到最大下标递增
huixing[minY][x] = ++count; //必须++count 不然count++第一次会赋值为0
}
minY ++; //说明Y纵轴的最小下标+1 向右已经赋值完一行了
for (int y = minY; y <= maxY; y++) { //向下 从最小到最大下标递增
huixing[y][maxX] = ++count;
}
maxX --; //以上同理不再赘述
for (int x = maxX; x >= minX; x--) { //向左 从最小到最大下标递减
huixing[maxY][x] = ++count;
}
maxY --;
for (int y = maxY; y >= minY; y--) { //向上 从最小到最大下标递减
huixing[y][minX] = ++count;
}
minX ++;
}
//遍历
// for (int i = 0; i < huixing.length; i++) {
// for (int j = 0; j < huixing[i].length; j++) {
// System.out.print(huixing[i][j] +"\t");
// }
// System.out.println();
// }
//增强for循环遍历数组
for (int[] ints : huixing) {
for (int anInt : ints) {
System.out.print(anInt + "\t");
}
System.out.println();
}
}
}