java自学程序员

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

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

上一篇下一篇

猜你喜欢

热点阅读