数组与循环
//生成6个不重复的2位随机数
//1、6个
//2、如何证明不重复
Random rand = new Random(); //生成随机数
final int CAPACITY = 6; //确定数组长度为6
int[] nums = new int[CAPACITY]; //声明一个名叫nums的int类型的数组
int index = 0; //声明一个名叫index的int类型的变量
nums[index++] = 10+rand.nextInt(90); //给数集随机输入一个元素
for(int temp,j;index<CAPACITY;) {
temp = 10 + rand.nextInt(90); //随机生成一个叫temp的int类型的变量
for (j = 0; j < index; j++) {
if (temp == nums[j]) {
break;
} //temp和nums比较是否相等,若相等则跳出内循环
}
if (j == index) {
nums[index++] = temp; //若不等则将temp的值赋值给数集,然后开始下一个循环
}
} //外循环:与之前已经赋过值的比较是否重复
for(index =0;index<CAPACITY;index++){
System.out.println(nums[index]);
}
for(int t:nums){
System.out.println(t);
}
//1~10000之间的质数
//最小的质数为2
//证明质数:验证从2~Math.sqrt(num)中的质数即可
/*final int CAPACITY = 10000; //声明一个int类型的名叫CAPACITY的常量
int[] pns = new int[CAPACITY]; //声明一个int类型的名叫pns的数列
int index = 0,count =0;
pns[index++] = 2; //pns[0] = 2;
for(int i =3;i<=CAPACITY;i++){
boolean isPN = true; //定义一个boolean类型的变量,标记外层循环数是否为质数,默认设置为true。
for(int j = 0;pns[j]<=Math.sqrt(i);j++){
count++;
if(i%pns[j]==0){
isPN = false;
break;
} //内层循环结束后,如果该标记还为true时,即被除数为质数。
}
if(isPN){
pns[index++] = i;
}
}
System.out.println("loop number:"+count);
System.out.println("prime number count:"+(index+1));
for(int i =0;i<index;i++){
System.out.print(pns[i]+"\t");
if((i+1)%10==0){
System.out.println();
}
}
//生成10个0——100之间的整数成绩,求最大成绩,最小成绩,前三名成绩
Random rand = new Random();
final int CAPACITY = 10;
int [] scores = new int[CAPACITY]; //声明一个长度为10的数组
double avgScore = 0;
int i = 0;
scores[i++] = rand.nextInt(101); //scores[o] = 随机生成一个数,i= 1;
*/
/*
拿新元素和尾元素(有序数组最后一个元素,值最大的的元素)比较,如果大,则插入队尾
否则,依次从队尾你像比较,找到第一个比新元素小的值所在的下标
找到了:则新值插在其右侧:j+1,此时循环必须结束
找不到:则新值插入到第一个位置
*/
/*
for(int temp,j;i<scores.length;i++){
temp = rand.nextInt(101); //生成一个int类型的叫temp的变量并赋值
avgScore += temp; //平均成绩=总成绩/人数
if(temp>=scores[i-1]){
scores[i] = temp;
continue;
} //生成的temp变量的值与之前生成的scores[0]比较,若大于则替代之
for(j = i-1;j >=0 && scores[j]>temp;j--) { //j >=0 && scores[j]>temp;j-- 优化
scores[j+1] = scores[j];
} //当出现更大的数值时,数组里的元素要往后推一位
scores[j+1] = temp; //把temp的值赋给j+1
}
System.out.println("AVG="+(avgScore-scores[0]-scores[CAPACITY-1])/(CAPACITY-2));
for (int score :scores) {
System.out.println(score);
}
//有序数组中插入元素
Scanner input = new Scanner(System.in);
char[] as = {(char)0,'c','f','h','j','l','x'};//char (char)0 String null
System.out.println("请输入字符:");
char insert = input.next().charAt(0);
//寻找插入位置:
i = 0;
for(i =1;i <as.length && as[i]<insert;i++){
as[i-1] = as[i];
}
as[i-1] = insert;
for (char c : as){
System.out.println(c);
}
for(int j = 1;j<=3;j++){
System.out.println(scores[CAPACITY-j]);
}