java经典例题

猜数字游戏步骤:

①动态初始化数组,存入5个随机的1-20之间的数据。 ②定义一个死循环,不断的猜数据,遍历数组,判断数据是否存在数组中,如果在,进行对应的并提示结束死循环;如果没有猜中,提示继续。

package tan.Test;
import java.util.Scanner;
import java.util.Random;
public class game {
    public static void main(String[] args) {
        int[] data = new int[5];//创建一个内存为5的数组
        Random r = new Random();//生成随机数
        for (int i = 0; i < data.length; i++) {
            data[i] = r.nextInt(20)+1;//减加法0-20
        }//遍历随机生成0-20的5个数字
        Scanner sc = new Scanner(System.in);//从键盘输入
        OUT://判断是否猜中
        while(true){
            System.out.println("请输入一个0-20的整数进行猜数字:");
            int guessData = sc.nextInt();//输入猜的数
            for (int i = 0; i < data.length; i++) {
                if(data[i]==guessData){
                    System.out.println("猜中了");
                    break OUT;
                }
            }
            System.out.println("当前数据不在数组中,请重新猜测");
        }//没猜中继续
        for (int i = 0; i < data.length; i++) {
            System.out.print(data[i]+"\t");
        }//猜中后输出数组中的5个数字
    }
}

随机排名步骤:

①定义一个动态初始化的数组用于录入数据 ②遍历数组中的每个元素,每次随机一个索引值,让当前元素与该索引位置处的元素进行交换 ③遍历输出数组中的内容

package tan.Test;

import java.util.Random;
import java.util.Scanner;

public class rank {
    public static void main(String[] args) {
        //键盘录入一组工号,最终要求随机输出一组出来作为排名
        //动态初始化一个数组,储存5个工号
        int[] name = new int[5];
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < name.length; i++) {
            //正式录入工号
            System.out.println("请输入第"+(i+1)+"个员工的工号");
            int name1 = sc.nextInt();
            //存入数组中
            name[i] = name1;
        }
        //遍历数组中所以元素,然后随机生成一个索引出来,让该元素与随机索引位置处的元素值交换(重点)
        Random r = new Random();
        for (int i = 0; i < name.length; i++) {
            //当前遍历的元素值:name[i]
            //s随机一个索引位置出来:name[index]
            int index = r.nextInt(name.length);
            //定义一个临时变量储存index位置处的值
            int temp = name[index];
            name[index] = name[i];
            name[i] = temp;
        }
        for (int i = 0; i < name.length; i++) {
            System.out.print(name[i] + "\t");
        }
    }
}

冒泡排序:

①定义外部循环控制总共需要轮数(长度-1) ②定义一个内部循环,控制每轮依次往后比较几个位置(长度-i-1) ③当前位置元素>后一个位置的元素,两者交换。

package tan.Test;

public class maopaorank {
    public static void main(String[] args) {
        int[] arr = {5,2,3,1};//0,1,2,3
        //定义一个循环控制比较的轮数
        for (int i = 0; i < arr.length-1; i++) {
            //定义一个循环控制每轮比较的次数
            //i=1,三次
            //i=2,2次
            //i=3,1次
            for (int j = 0; j < arr.length-i-1; j++) {
                if(arr[j]>arr[j+1]){
                    int temp = arr[j+1];
                    arr[j+1] = arr[j];
                    arr[j] = temp;
                }
            }
        }
        //遍历数组输内容出
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+"\t");
        }
    }
}

找出数组的波峰和波谷: 

package tan.easy;
import java.util.Scanner;

//flag = 2表示前面在上升, flag=1表示前面在下降
//所以当flag从1变到2,或者从2变到1,就是波峰波谷
public class findPeak {
    public static void main(String[] args) {
        int[] nums = {2,4,1,1,6,5};
        int flag = 0;
        int ret = 0;
        for(int i = 1 ; i < nums.length ; i++){
            if(nums[i] > nums[i-1]){
                if(flag == 1)
                    ret++;
                flag = 2;
            }else if(nums[i] < nums[i-1]){
                if(flag == 2) ret++;
                flag = 1;
            }
        }
        System.out.println(ret);
    }
}

你可能感兴趣的:(Java基础,java)