猜数字游戏步骤:
①动态初始化数组,存入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);
}
}