问:
随机生成100以内的十个数,找出其最大值下标和最小值下标,将其降序排序,输出总和,并查询是否含有8这个数字。
public class P188SunJiShu {
public static void main(String[] args) {
int [] arr =new int[10];//定义数组,长度为十
int sum=0;
int index2 =-1;//建立索引,判断是否含有8
Random random =new Random();//随机数生成语法
for (int i =0;i<10;i++){
arr[i]=random.nextInt(100);//生成100以内的随机数
sum +=arr[i];//求和
while (arr[i]==8){//含有8,将其标记下来
index2 =1;
}
}
System.out.print("随机数组:");
for (int i =0;i< arr.length;i++) {
System.out.print( arr[i]+"\t");
}//打印随机数数组
System.out.println("");
//通过index2的值来判断是否含有8
if (index2 ==-1){
System.out.println("随机数中没有8");
}else if(index2 ==1){
System.out.println("随机数中有8");
}
int max =arr[0];
int maxindex =0;//标记最大值下标
int min =arr[0];
int minindex =0;//标记最小值下标
//最大值最小值下标确定
for (int i =1;i< arr.length;i++){
if (max <=arr[i]){
max=arr[i];
maxindex =i;
}else if (min>arr[i]){
min =arr[i];
minindex =i;
}
}
System.out.println("最大下标:"+maxindex);
System.out.println("最小下标:"+minindex);
int temp =0;//中间变量,进行元素判断以及调整位置
for (int j =0;j< arr.length-1;j++) {
for (int i = 0; i < arr.length-1-j; i++) {
if (arr[i] < arr[i + 1]) {
temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
}
System.out.print("倒序顺序:");
for (int i =0;i< arr.length;i++) {
System.out.print( + arr[i]+"\t");
}//打印降序数组
System.out.println("");
System.out.println("总和为:"+sum);
}
}
注:随机数生成方法:
1、java中随机取数使用random方法
构造函数方法有二:
① Random(long seed);//利用seed作为随机发生器的种子
② - Random(); //省略了seed,则则利用系统时间作为随机发生器的种子
Random random = new Random();
创建完随机对象之后通过以下方法可以获得不同类型的随机数method:
nextInt()、nextLong()、nextFloat()、nextDouble();
random方法的包:
import java.util.Random;
指定范围内的随机数三种方法:
//100以内的随机数
①通过java.util包中的Random类的next方法来获得
import java.util.Random;
public class CeShi{
public static void main(String []args) {
Random random = new Random();
for(int i=0;i<10;i++)
System.out.print(random.nextInt(100)+" ");
}
}
②(数据类型)(最小值+Math.random()*(最大值-最小值+1))
(int)(Math.random()*(100-1+1))
System.out.print((int)(Math.random()*100)+" ");
③利用%进行取模操作即可
产生的随机数有正有负,利用abs方法取绝对值 通过%100就能得到100 以内的随机数
System.out.print(Math.abs(random.nextInt()%100)+" ");