三、数组和语句综合练习题
2017-11-20 本文已影响4人
孙浩j
1.实现出入不定数量参数,进行排序(考点:可变参数其实是把参数存到数组里)
/**
* (double...d)表示可变参数,多少个参数都可以
* @author Administrator
*
*/
public class Max {
public static void main(String[]args){
double m=max(1.1,5.2,8.3,55.4,6.4,8.5);
System.out.println(m);
}
public static double max(double...d){
double largest=0;
for(double dl:d){
if(dl>largest){
largest=dl;
}
}
return largest;
}
}
2.抽奖
/**This program demonstrates array manipulation
* 实现抽奖
* 通过键盘输入从多少个数抽取多少个数
* 将总数构建一个数组,为数组填满元素,数组长度为输入的总长度
* 建立抽取多少个数的数组,数组长度为输入的想抽取的数,通过随机数乘总数得到数字
* ,因为抽到的数字一定是总数里的数字,所以随机数乘总数作为总数数组里的索引,
* 将索引值所得到的数填充到抽到的数字。
* 为控制每次索引得到的不是同一个数,把索引过的索引到的数字替换为总数数组里的最后一个数,
* 通过“索引位--”去除总数数组里的最后一个的索引位,
* 其实不是真实去除,只是永远不会索引到,数组里还是存在的
*/
import java.util.*;
public class choujiang {
public static void main(String[] args){
Scanner in=new Scanner(System.in);
System.out.println("How many numbers do you want to draw?");
int a=in.nextInt();
System.out.println("What is the highest number you can draw");
int b=in.nextInt();
int []numbers=new int[a]; //往数组装入总数字
for(int i=0;i<numbers.length;i++){
numbers[i]=i+1;
}
int []results=new int[b]; //往数组装入要选多少个
for(int i=0;i<results.length;i++){
int r=numbers[(int) (Math.random()*a)]; //得出中奖号码,让随机数不会出现去除数的索引
results[i]=numbers[r];
numbers[r]=numbers[a-1]; //将已经获取到的数变一个值,在获取此索引是获取的不是相同值
a--;
}
Arrays.sort(results);
System.out.println(Arrays.toString(results));
}
}
3.数三进一问题
/**
* Test 数3退1的问题
* 建立一个500个孩子的布尔型数组,在里面为true,不再为false
* 一开始500孩子都在里面,赋值true
* 当剩下的孩子多于一个的时候进行循环
* 如果孩子在里面,数的数加1;当数等于3是,把孩子设置为false就不在里面了
* 退出如果语句,索引值增大,如果索引值等于数组长度,索引值归零重新循环
* 多次循环后数组里只有一个值为true
* 通过for循环,if判断true得出数组里的true值
* @author Administrator
*
*/
public class Count {
public static void main(String[]args){
Boolean [] a=new Boolean[500];
for(int i=0;i<a.length;i++){
a[i]=true;
}
int leftcount=500;
int count=0;
int temp=0;
while(leftcount>1){
if(a[temp]==true){
count++;
if(count==3){
a[temp]=false;
leftcount--;
count=0;
}
}
temp++;
if(temp==500){
temp=0;
}
}
for(int i=0;i<500;i++){
if(a[i]==true){
System.out.println(i);
}
}
}
}