美文网首页java自学程序员
三、数组和语句综合练习题

三、数组和语句综合练习题

作者: 孙浩j | 来源:发表于2017-11-20 13:03 被阅读4次

    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);
        }
    }
    }
    }
    
    

    相关文章

      网友评论

        本文标题:三、数组和语句综合练习题

        本文链接:https://www.haomeiwen.com/subject/szumvxtx.html