JAVA编程练习(二) 2021-01-13

JAVA每日编程练习

练习一

给定一个数组,过滤其中重复的元素,并输出过滤后的新数组(自定义方法)

代码如下:

package com.apesource.demo01;

import java.util.Arrays;

//过滤重复元素
public class Test042 {
     
	public static void main(String[] args) {
     
		String[] phoneNumberArray = {
     "131","133","137","131","139","133","131","135","187","135"};
		
		String[] result01 = filter(phoneNumberArray);
		System.out.println(Arrays.toString(result01));
	}
	
	public static String[] filter(String...array){
     
		//创建新数组,用于保存过滤后的元素
		String[] resultArray = new String[array.length];
		
		// 依次遍历原数组中的元素
		int n = 0;
		for(int i = 0;i<array.length;i++) {
     
			//临时变量
			String temp = array[i];
			
			//检查是是否存在重复元素
			boolean isSame = false;//默认为false,代表没有重复
			for(int k = 0;k < n;k++) {
     
				if(temp.equals(resultArray[k])) {
     
					isSame = true;
					break;
				}	
			}
			
			if(!isSame) {
     
				//没有发现重复值
				resultArray[n++] = temp;
			}
		}
		//判断是否存在null元素
		if(n != resultArray.length) {
     
		//复制数组内前n个元素(除去null元素)
		resultArray = Arrays.copyOf(resultArray, n);
		}
		return resultArray;
		}
	}

练习二

区间测速:给定一段时间字符串数组,每两个为进入区间时间和驶出区间时间。给定数组为六辆车的时间数据
需求:1.计算这些车辆在区间内的平均车速。
2.输出用时最短和用时最长的车辆数据。

代码如下:

package com.apesource.demo01;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;

/*
 * 	区间测速
 * 	区间距离为12KM
 *	需求1:计算所有车辆通过该区间的平均时速(单位是秒/KM)
 *	需求2:用时最短和用时最长
 *	先将数据数组转化成Date类型,再使用getTime()得到毫秒值,
 *  两两相减,得到时间值,再除以区间距离,得到平均时速数组,再求其平均值输出,排序,输出取首尾元素。
 */
public class Test043 {
     
	public static void main(String[] args) throws ParseException {
     
		// 原始数据
		String[] dateArray = {
      "14:32:18", "14:34:28", "15:27:53", "15:31:42", "16:44:10", "16:52:19", "17:33:57", "17:42:01", "17:36:19", "17:41:18", "17:58:52", "18:07:03" };
		//1.String[] => Date[]
		SimpleDateFormat Array = new SimpleDateFormat("hh:mm:ss");
		Date[] Array1 = new Date[dateArray.length];
		long[] Array2 = new long[dateArray.length];
		int i = 0,k = 0;
		for(i = 0;i<dateArray.length;i++) {
     
			Array1[i] = Array.parse(dateArray[i]);
			Array2[i] = Array1[i].getTime();
		}
		//2.将时间数组进行运算,得到时速数组
		long[] speed=new long[Array2.length/2];
		for(i = 0,k = 0;i<Array2.length-1 && k<Array2.length/2;i=i+2,k++) {
      
			speed[k]=((Array2[i+1]-Array2[i])/1000);	
		}
		//3.计算速度,平均速度
		double[] result = new double[speed.length];
		for(i=0;i<speed.length;i++) {
     
			double temp = speed[i];
			result[i]=12/temp;
		}
		System.out.println(Arrays.toString(result));
		double par = 0;
		for(i=0;i<result.length-1;i++) {
     
			par =(par + result[i]);
		}
		System.out.println("平均速度为:" + par/6 +"km/s");
		//输出最大和最小速度
		for(i=0;i<result.length-1;i++) {
     
			for(k=0;k<result.length-1-i;k++) {
     
				if(result[k]>result[k+1]) {
     
					double temp = result[k];
					result[k] = result[k+1];
					result[k+1] = temp;
				}
			}
		}
		System.out.println("最小速度为:"+result[0]+"km/s");
		System.out.println("最大速度为:"+result[result.length-1]+"km/s");
		
	}
}

此代码将所有循环都单独写了出来,目的是加深每一步的理解,之后会优化代码,使其简单有效

练习三

输入字符串shdkxns
格式化输出s,h,d,k,x,n,s

代码如下:

package com.apesource.test01;
import java.util.Scanner;
import java.util.StringJoiner;

public class Test02 {
     

	public static void main(String[] args) {
     
		Scanner input = new Scanner(System.in);
		String line = input.next();
		//转化为字符数组
		char[] array = line.toCharArray();
		
		StringJoiner joiner = new StringJoiner(",");
		for(char c : array) {
     
			joiner.add(String.valueOf(c));//讲数据类型转化为字符串
		}
		System.out.println(joiner);
	}


}

你可能感兴趣的:(java)