1、面试题目:创建一个长度为6的int型数组,要求取值为1-30,同时元素值各不相同。
public class Exer1 {
public static void main(String[] args){
int[] arr = new int[6];//初始化一维数组
//方式一:
// for(int i = 0;i < arr.length;i++){//对一维数组进行赋值
// arr[i] = (int)(Math.random() * 30 + 1);//1-30的随机数赋值
//
// boolean flag = false;//定义一个布尔值,为后续确定随机数是否相等
// while(true){
// for(int j = 0;j < i;j++){//判断随机赋值是否相同了
// if(arr[i] == arr[j]){//如果随机赋值相同了
// flag = true;//赋值flag为true
// break;//跳出本次循环结构
// }
// }
// if(flag){//如果flag为true
// arr[i] = (int)(Math.random() * 30 + 1);//重新为arr[i]赋值
// flag = false;
// continue;
// }
// break;
// }
// }
//方式二:
for(int i = 0;i < arr.length;i++){
arr[i] = (int)(Math.random() * 30 + 1);
for(int j = 0;j < i;j++){
if(arr[i] == arr[j]){
i--;
break;
}
}
}
for(int i = 0;i < arr.length;i++){
System.out.println(arr[i]);
}
}
}
2、回形数格式方阵的实现从键盘输入一个整数(1~20)则以该数字为矩阵的大小,把1,2,3…n*n 的数字按照顺时针螺旋的形式填入其中。
例如: 输入数字2,则程序输出: 1 2
4 3
输入数字3,则程序输出:
1 2 3
8 9 4
7 6 5
输入数字4, 则程序输出:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
import java.util.Scanner;
public class Exer2 {
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.println("输入一个数字(1-20):");
int len = scan.nextInt();
int[][] arr = new int[len][len];
int s = len * len;
/*
* k = 1:向右;k=2:向下;k=3:向左;k=4:向上;
*/
int k = 1;
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(i >= 0 && arr[i][j] == 0){
arr[i--][j] = m;
}else{
k = 1;
i++;
j++;
m--;
}
}
}
//遍历
for(int m = 0;m < arr.length;m++){
for(int n = 0;n < arr[m].length;n++){
System.out.print(arr[m][n] + "\t");
}
System.out.println();
}
}
}