1.
使用计数排序的思想来做,即arr[i]就表示i出现的次数。先创建一个101大小的数组,然后输入,计算i出现的次数,再判断是否出现了0,最后输出。
import java.util.Scanner;
class Demo05_01_02{
public static void main(String[] args){
//0 1 2 3 4 5 ~ 100
//0 单独不算 懒一下 不想计算offset
//arr[i] 就表示数字i出现的次数
int[] arr=new int[101];
Scanner scanner=new Scanner(System.in);
System.out.print("Enter numbers:");
while(true){
int num=scanner.nextInt();
if(num==0){
break;
}
arr[num]++;
}
for(int i=0;i<arr.length;i++){
if(arr[i]!=0){
System.out.println(i+" occurs "+arr[i]+(arr[i]>1?" times":" time"));
}
}
}
}
2.
使用动态扩容思想,先创建一个空的数组,然后输入数值,如果数组中不包含这个数,就把数组的容量加一赋给新的数组arr,然后再把这个数给该arr.length-1.调用了copyOf函数和contains函数。
import java.util.*;
class Demo05_02{
public static void main(String[]args){
//边输入边去重复
int[] arr=new int[0]; //先创建一个空的数组
Scanner scanner=new Scanner(System.in);
System.out.print("请输入十个数:");
for(int i=0;i<10;i++){
int num=scanner.nextInt();
if(!contains(arr,num)){
arr=copyOf(arr,arr.length+1); //如果输入的数在数组中不包含,则将数组的长度加一再赋值给arr
arr[arr.length-1]=num; //将输入的数加入到该数组的最后一位
}
}
System.out.println(Arrays.toString(arr));
}
public static int[] copyOf(int[] arr,int newLen){
int[] newArr=new int[newLen];
for(int i=0;i<arr.length;i++){
newArr[i]=arr[i];
}
return newArr;
}
public static boolean contains(int[]arr,int key){
for(int i=0;i<arr.length;i++){
if(arr[i]==key){
return true;
}
}
return false;
}
}
3.
先提示用户输入数组的长度,再遍历输入数值,调用isSorted函数,如有一组arr[i-1]>a[i]的话就输出false。
import java.util.*;
class Demo05_03{
public static void main(String[] args){
//1.获取用户的输入 只不过第一个输入的数据时数据的个数(数组的长度)
Scanner scanner=new Scanner(System.in);
System.out.print("Enter a list:");
int len=scanner.nextInt();//获取的第一个数值就是数组的长度
int[] arr=new int[len];
for(int i=0;i<arr.length;i++){
arr[i]=scanner.nextInt();
}
//2.对数组进行有序的判断
if(isSorted(arr)){
System.out.println("The list is already sorted.");
}else{
System.out.println("The list is not sorted.");
}
}
public static boolean isSorted(int[] list){
//如果不是升序排列 那么势必会出现有一组数据 左大右小的情况
for(int i=1;i<list.length;i++){
if(list[i-1]>list[i]){
return false;
}
}
return true;
}
}
4.
/*
输入的数据:槽子的个数 球的个数=路径的个数
创建槽子的具体的容器int[]
每一个小球下落的路径L R 字符串
对于每一个小球而言其路径中的步骤是随机产生L R
1.提示用户输入槽子的个数和小球的个数
2.根据已有的槽子的个数去创建槽子容器
3.根据已有的球和槽子的个数去随机创建一个小球下落的路径
4.路径中经过几个钉子?路径的步骤有几步 和槽子的个数有关
5.如何通过路径的经过得知最终所落入的槽子?
*/
import java.util.*;
class Demo05_04{
public static void main(String[] args){
//1.
Scanner scanner=new Scanner(System.in);
System.out.print("Enter the number of balls to drop:");
int balls=scanner.nextInt();
System.out.print("Enter the number of slots in the bean machine:");
int slots=scanner.nextInt();
//2.
int[] arr=new int[slots];
//3.几个球几个路径path
for(int i=0;i<balls;i++){