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

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 86.复合 Cases 共享相同代码块的多个switch 分支 分支可以合并, 写在分支后用逗号分开。如果任何模式...
    无沣阅读 5,326评论 1 5
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 13,153评论 1 51
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 8,734评论 0 4
  • 时光呵阅读 1,360评论 0 0
  • 郁结在心里这么久,写出来果然想明白很多,一直也是我不愿意去正面吧。我是不是一个清白的人又何须去证明,世人眼中清白的...
    喁喁雨阅读 1,450评论 0 1

友情链接更多精彩内容