1、一个固定的数组(大小为5),随即赋值(1-20),要使其中的元素都不同。
方法一:
package com.wm.lianxi;
public class ArraySuanFa1 {
public static void main(String[] ages) {
int[] arr = new int[30000];
long start= System.currentTimeMillis();//记录初始时间
for (int i = 0; i < arr.length; i++) {
arr[i] = (int) (Math.random() * 30000) + 1;
boolean flag = false;
while (true) {
for (int j = 0; j < i; j++) {
if (arr[i] == arr[j]) {
flag = true;
break;
}
}
//给其重新赋值。
if (flag) {
arr[i] = (int) (Math.random() * 30000) + 1;
flag = false;
continue;
}
break;
}
//System.out.println(arr[i] + " ");
}
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i] + " ");
}
long end= System.currentTimeMillis();
long x=end-start;
System.out.println("执行时间为:"+x+"毫秒");
}
}
方法二:
package com.wm.lianxi;
public class ArraySuanFa2 {
public static void main(String[] ages) {
int[] arr = new int[30000];
long start= System.currentTimeMillis();//记录初始时间
for (int i = 0; i < arr.length; i++) {
arr[i] = (int) (Math.random() * 30000) + 1;
for (int j = 0; j < i; j++) {
if (arr[i] == arr[j]) {
i--;
break;
}
}
//System.out.println(arr[i] + " ");
}
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i] + " ");
}
long end= System.currentTimeMillis();
long x=end-start;
System.out.println("执行时间为:"+x+"毫秒");
}
}
2、输入有一个数i,得到i行i列的一个有规律的图形,其规律如下(回形数):
方法一:package com.wm.lianxi;
import java.util.Scanner;
public class ArrayHuiXingShu {
public static void main(String[] args) {
Scanner scnner = new Scanner(System.in);
System.out.println("请输入一个数字");
int len = scnner.nextInt();
int[][] arr = new int[len][len];
int s = len * len;
int k = 1;// k=1:向右,k=2:向下,k=3:向左,k=4:向上。
int i = 0, j = 0;
for (int m = 1; m <= s; m++) {
if (k == 1) {
if (j < len && arr[i][j] == 0) {
arr[i][j++] = m;
} else {//改变方向。
k = 2;
i++;//换行
j--;//复原
m--;//复原
}
} else if (k == 2) {
if (i < len && arr[i][j] == 0) {
arr[i++][j] = m;
} else {
k = 3;
i--;
j--;
m--;
}
} else if (k == 3) {
if (j >= 0 && arr[i][j] == 0) {
arr[i][j--] = m;
} else {
k = 4;
i--;
j++;
m--;
}
} else if (k == 4) {
if (j >= 0 && arr[i][j] == 0) {
arr[i--][j] = m;
} else {
k = 1;
i++;
j++;
m--;
}
}
}
System.out.println(arr[1][1]);
System.out.println(arr[1][3]);
for( i=0;i<arr.length;i++){
for(j=0;j<arr[i].length;j++){
System.out.print(arr[i][j]+"\t");
}
System.out.println();
}
}
}
方法二:
package com.wm.lianxi;
import java.util.Scanner;
public class ArrayHuiXingShu {
public static void main(String[] args) {
Scanner scnner = new Scanner(System.in);
System.out.println("请输入一个数字");
int n = scnner.nextInt();
int [][] arr=new int[n][n];
int count =0;
int maxX=n-1;//x轴最大下标
int maxY=n-1;//y轴最大下标
int minX=0;//x轴最小下标
int minY=0;//y轴最小下标
while(minX<=maxX){
for(int x=minX;x<=maxX;x++)
{
arr[minY][x]=++count;
}
minY++;
for(int y=minY;y<=maxY;y++){
arr[y][maxX]=++count;
}
maxX--;
for(int x=maxX;x>=minX;x--){
arr[maxY][x]=++count;
}
maxY--;
for(int y=maxY;y>=minY;y--){
arr[y][minX]=++count;
}
minX++;
}
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr[i].length;j++){
System.out.print(arr[i][j]+"\t");
}
System.out.println();
}
}
}
3.随机数求最值与和值。
package com.wm.lianxi;
public class ArrayTestZui {
public static void main(String[] args) {
int [] arr=new int[10];
for(int i=0;i<arr.length;i++){
arr[i]=(int)(Math.random()*(99-10+1)+10);//[10,99]
}
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+"\t");
}
System.out.println();
//最大值;
int maxValue=arr[0];
for(int i=1;i<arr.length;i++){
if(maxValue<arr[i]){
maxValue=arr[i];
}
}
System.out.println("最大值为:"+maxValue);
//最小值:
int minValue=arr[0];
for(int i=1;i<arr.length;i++){
if(minValue>arr[i]){
minValue=arr[i];
}
}
System.out.println("最小值为:"+minValue);
//总和:
int sum=0;
for(int i=0;i<arr.length;i++){
sum+=arr[i];
}
System.out.println("总和为:"+sum);
//平均数:
int avgValue=sum/arr.length;
System.out.println("平均数为:"+avgValue);
}
}