一些java的小实例
1.随机生成1~100之间的随机数30个,求最大值?并确定该值是否重复?若存在重复,重复多少次?
Random rand = new Random();
int [] arr = new int[30];
for (int i = 0; i <arr.length ; i++) {
arr[i] = rand.nextInt(100) + 1;
}
int max=arr[0];
for (int i = 0; i <arr.length ; i++) {
if(arr[i]>max){
max=arr[i];
}
}
for(int c :arr){
System.out.print(c+"\t");
}
System.out.println("\n请输出最大值为"+max);
int count = 0;
for (int i = 0; i <arr.length ; i++) {
if(max==arr[i])
{
count++;
}
}
System.out.println(count>1?"有":"没有"+"重复");
if(count>1){
System.out.println("重复了"+(count-1)+"次");
}
运行结果如下:
2.找到数组{8,9,6,12,14,5,2}的中位数及输出其下标。
int[] arr ={8,9,6,12,14,5,2};
//控制台先输出这组数组
for(int c:arr){
System.out.print(c+"\t");
}
//初始化
int begin=0,end=arr.length-1,mid=arr[0],t;
//begin<end,先从右边开始和初始定义的中位数比大小。下标end的值>=初始定义的中位数,end--。
while(begin<end) {
if (arr[end] >= arr[0])
end--;
//否则就对比下标begin和初始定义的中位数的大小,如果下标begin<=初始定义的中位数,begin++。
else {
if (arr[begin] <= arr[0])
begin++;
else {
t = arr[end];
arr[end] = arr[begin];
arr[begin] = t;
}
}
//如果end找到第一个比初始设定的中位数小的和begin找到第一个比初始设定的中位数大的值时,两个数需要交换。
// 以中间数t来作为交换体。一直重复上述比大小,数值交换的操作,直到begin和end相遇
}
//如果相遇了,arr[begin]=arr[end],再对比和初始定义的中位数是否一致,不是的话则需要交换。
if (begin != 0) {
arr[0] = arr[begin];
arr[begin] = mid;
}
System.out.println();
for(int c:arr){
System.out.print(c+"\t");
}
System.out.println("\n中位数为"+mid+"他的下标为"+begin);
运行结果如下:
3.输入两个日期(年月日),计算这两个日期之间相差多少天
String firstTime = "2018-5-20";
String secondTime = "2020-5-20";
//将日期格式化成“yyyy-MM-dd”
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//设置一个常量,精确到毫秒,因为下面获取时间是以毫秒为单位的,所以这边方便计算
final long MS = 24*60*60*1000;
long first = sdf.parse(firstTime).getTime();
long second = sdf.parse(secondTime).getTime();
long day = (second-first)/MS;
System.out.print("相差"+day+"天");
运行结果如下: