我是最棒的!基础不牢,地动山摇!
1、定义一个方法:返回一个int[]中最小的那个数(5分);
package cn.itsource.exam;
import java.util.Arrays;
public class Exam1 {
/**
* 1、定义一个方法:返回一个int[]中最小的那个数(5分);
* 测试
*/
public static void main(String[] args) {
/*
* 下面测试空数组,会抛出异常并给出提示信息
*/
//int[] nullArr = null;
//System.out.println(getMin(nullArr));
//正常测试两种方法
int[] arr = {5,3,2,8,9};
int min = getMin(arr);
System.out.println("min = " + min);
int min2 = getMinNew(arr);
System.out.println("min = " + min2);
}
/**
* 获取最小值的方法
* @param arr
* @return
*/
public static int getMin(int[] arr){
if(arr == null || arr.length == 0){
throw new IllegalArgumentException("该数组为空,无法判断");
}
int min = arr[0];
for (int i = 1; i < arr.length; i++) {
if(arr[i] < min){
min = arr[i];
}
}
return min;
}
/**
* 通过排序获取最小值
* @param arr
* @return
*/
public static int getMinNew(int[] arr){
if(arr == null || arr.length == 0){
throw new IllegalArgumentException("该数组为空,无法判断");
}
Arrays.sort(arr);
return arr[0];
}
}
2、现在给出两个数组,数组arr1: “1,7,9,11,13,15,17,19,33,51”; 数组arr2:”12,24,6,8,10”,两个数组合并之后数组newArr,在按照升序排列,通过定义方法的方式(10分,合并5分,排序5分)
package cn.itsource.exam;
import java.util.Arrays;
public class Exam2 {
/**
* 2、现在给出两个数组,数组arr1: “1,7,9,11,13,15,17,19,33,51”;
* 数组arr2:”12,24,6,8,10”,两个数组合并之后数组newArr,在按照升序排列,
* 通过定义方法的方式(10分,合并5分,排序5分)
*/
public static void main(String[] args) {
//测试合并数组
int[] arr1 = {1,3,5,6,7};
int[] arr2 = {5,3,6,9,8};
int[] arr = mergeArray(arr1, arr2);
System.out.println(Arrays.toString(arr));
}
/**
* 合并数组的方法,使用arraycopy来操作
* @param arr1
* @param arr2
* @return
*/
public static int[] mergeArray(int[] arr1,int[] arr2){
int[] arr = new int[arr1.length + arr2.length];
System.arraycopy(arr1, 0, arr, 0, arr1.length);
System.arraycopy(arr2, 0, arr, arr1.length, arr2.length);
Arrays.sort(arr);
return arr;
}
}
3. 有如下一个工具类StringUtil,其中有这样的一些工具方法static: (15分)
a) 判断一个字符串是否为空字符串;(5分)
b) String和Date之间的相互转换;(5分)
c) 判断一个字符串是否以指定的后缀结尾;(5分)
请完成其功能代码;
并对每一个功能写上测试代码;
给这个类 StringUtilTest以及类中的每个方法加上文档注释
StringUtil类
package cn.itsource.exam;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* 有如下一个工具类StringUtil,其中有这样的一些工具方法static: (15分)
a) 判断一个字符串是否为空字符串;(5分)
b) String和Date之间的相互转换;(5分)
c) 判断一个字符串是否以指定的后缀结尾;(5分)
请完成其功能代码;
并对每一个功能写上测试代码;
给这个类 StringUtilTest以及类中的每个方法加上文档注释
*
*/
public class Exam3_StringUtil {
/**
* 判断字符串是否为空的方法
* @param str
* @return
*/
public static boolean isNull(String str){
return str.isEmpty();
}
/**
* 将Date转换为String类型的方法
* @param date
* @return
*/
public static String changeToString(Date date){
SimpleDateFormat sdf = new SimpleDateFormat();
return sdf.format(date);
}
/**
* 将String类型转换为Date类型的方法
* @param str
* @return
* @throws ParseException
*/
public static Date changeToDate(String str) throws ParseException{
SimpleDateFormat sdf = new SimpleDateFormat();
return sdf.parse(str);
}
/**
* 判断一个字符串是否以指定字符串为后缀的方法
* @param str
* @param destStr
* @return
*/
public static boolean endWith(String str,String destStr){
return str.endsWith(destStr);
}
}
测试类
package cn.itsource.exam;
import java.text.ParseException;
import java.util.Date;
public class Exam3 {
public static void main(String[] args) {
//测试字符串是否为空串
String str = "";
System.out.println(Exam3_StringUtil.isNull(str));
String str2 = "666";
System.out.println(Exam3_StringUtil.isNull(str2));
//测试Date转换String
Date date = new Date();
String str3 = Exam3_StringUtil.changeToString(date);
System.out.println(str3);
//测试String转换为Date
try {
System.out.println(Exam3_StringUtil.changeToDate(str3));
} catch (ParseException e) {
e.printStackTrace();
}
//测试是否以指定字符串为后缀
String str4 = "abcdef";
String str5 = "ef";
String str6 = "ab";
System.out.println(Exam3_StringUtil.endWith(str4, str5));
System.out.println(Exam3_StringUtil.endWith(str4, str6));
}
}
4.写2个单例模式,不考虑线程安全问题(10分,一个5分)
饿汉模式
package cn.itsource.exam;
/**
* 饿汉模式
*/
public class Exam4_Singleton {
private static final Exam4_Singleton INSTANCE = new Exam4_Singleton();
private Exam4_Singleton(){
}
public static Exam4_Singleton getInstance(){
return INSTANCE;
}
}
枚举
public enum Exam4_Enum {
SINGLETON;
}
5.写一个方法,生成n位验证码,验证码范围(1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM)(20分 1.写一个生成指定范围内随机数的方法(8分)2.写生成验证码的方法(12分))
package cn.itsource.exam;
import java.util.concurrent.ThreadLocalRandom;
/**
* 写一个方法,生成n位验证码,验证码范围(1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM)
* (20分 1.写一个生成指定范围内随机数的方法(8分)2.写生成验证码的方法(12分))
*/
public class Exam5 {
public static void main(String[] args) {
String str = "1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM";
for (int i = 0; i < 100; i++) {
System.out.println(getIdentifyingCode(str, 4));
}
}
/**
* 生成验证码的方法
*/
public static String getIdentifyingCode(String str,int num){
char[] ch = str.toCharArray();
String result = "";
for(int i = 0;i < num;i++){
result += ch[getRandom(0, ch.length)];
}
return result;
}
/**
* 生成随机数的方法
*/
public static int getRandom(int start,int end){
ThreadLocalRandom random = ThreadLocalRandom.current();
return random.nextInt(start, end);
}
}