1.数组练习
<1>现有一个整数数组,数组中的每个元素都是[0-9]之间的数字,从数组的最大索引位置开始到最小索引位置,依次表示整数的个位、十位、百位。。。依次类推。请编写程序计算,这个数组所表示的整数值。例如:数组:{2, 1, 3, 5, 9}
表示的整数为21354 注:是整数类型的两万一千三百五十九,不是字符串拼接起来的。
提示:、首先肯定要获取数组的每一个元素,需要遍历。
2、根据题目分析,个位元素本身就可以表示值,十位是元素乘以10来表示值,百位就是元素乘以100来表示值。。。它们之间有什么规律呢?从左至右,每一位所表示的值是下一位的十倍。
public static void main(String[] args){
//1.定义一个int类型的数组,使用静态初始化存储
int[] arr = {4,5,6,7,8};
//2.定义一个变量num用来存储得到的整数
int num = 0;
//3.对数组进行遍历
for(int i = 0;i < arr.length;i++){
//4.计算高位乘以10再加上当前前位的值
num = num * 10 + arr[i];
}
//5.打印结果
System.out.println(num);
}
2.方法练习
<2>一个大V直播抽奖,奖品是现金红包,分别有{2,588,888,1000,10000}五个奖金。请使用代码模拟抽奖,打印出每个奖项,奖项的出现顺序要随机且不重复。打印效果如下:(随机顺序,不一定是下面的顺序)
888元的奖金被抽出
588元的奖金被抽出
10000元的奖金被抽出
1000元的奖金被抽出
2元的奖金被抽出
提示:1. 奖项要随机出现,但奖金不是连续的数字,不能被随机产生。能随机产生的只有数组的索引了,可以使用随机索引来代表随机元素。因为索引和元素是一一对应的,
2. 哪些奖被抽过了,哪些奖没有被抽过,要定义一个数组来存放已经被抽过的奖项。
3. 每个奖项只能被抽出一次,要写一个方法来控制奖项不重复。
public static void main(String[] args){
//1.定义一个数组存储奖金
int[] arr = {2,588,888,1000,10000};
//2.定义一个新数组用于存储抽奖结果
int[] newArr = new int [arr.length];
//3.抽奖,要求抽到的奖项是随机的,所以要使用随机数
Random r = new Random();
//因为有五个奖项,所以要循环5次
for(int i = 0;i < 5;i++){
//获取随机索引
int randomIndex =r.nextInt(arr.length);
//获得奖项
int price =arr[randomIndex];
//判断当前奖项是否存在,如果存在就重新抽取
//如果不存在,就表示有效奖项
boolean flag = contains(newArr,price)
if(!flag){
//把当前抽取的奖项放到新数组newArr中
newArr[i] = price;
//添加完成后,移动索引
i++;
}
}
//遍历新数组
for(int i = 0;i < newArr.length;i++)
System.out.println(newArr[i];
}
//定义一个方法,用来判断price在数组中是否存在
//存在 true
//不存在 false 形参:将数组和奖项放入
public static boolean contains(int[] arr,int price)
//遍历数组
for(int i = 0;i < arr.length;i++)
//判断奖项和数组中的奖项是否相等
if(arr[i] == price)
return true;
}
}
return false;
}