测试题


1.

package com.itheima;

public class Test1 {

	/**
	 * @param args
	 * @author NewDemo 1、 请列举您了解的一些排序算法,并用Java语言实现一个效率较高的。
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}

	/* 我知道的排序算法有选择排序,冒泡排序,快速排序 */
	// 快速排序效率要比前选择和冒泡效率更高
	public static void quickSort(int a[], int start, int end) {
		int i = start, j = end;
		if ((a == null) || (a.length == 0))
			return;
		while (i < j) {
			while (i < j && a[i] <= a[j]) {// 以数组start下标的数据为key,右侧扫描
				j--;
			}
			if (i < j) {// 右侧扫描,找出第一个比key小的,交换位置
				int temp = a[i];
				a[i] = a[j];
				a[j] = temp;
			}
			while (i < j && a[i] < a[j]) {// 左侧扫描(此时a[j]中存储着key值)
				i++;
			}
			if (i < j) {// 找出第一个比key大的,交换位置
				int temp = a[i];
				a[i] = a[j];
				a[j] = temp;
			}
		}
		if (i - start > 1) {
			// 递归调用,把key前面的完成排序
			quickSort(a, start, i - 1);
		}
		if (end - i > 1) {
			quickSort(a, i + 1, end);// 递归调用,把key后面的完成排序
		}
	}
}
2.

package com.itheima;

public class Test2 {

	/**
	 * @param args
	 * @author NewDemo
	 *         2、判断一个字符串是否是对称字符串,例如"abc"不是对称字符串,"aba"、"abba"、"aaa"、"mnanm"是对称字符串
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String str = "abffcba";
		System.out.println(isSymmetry(str));
	}

	/*
	 * 思路:1.如果拿到的字符串对称的话,那么它反转后的结果和原字符串相同,String没有reverse方法,
	 * 所以采用将字符串存到StringBuilder中
	 */
	public static boolean isSymmetry(String str) {
		StringBuilder sb = new StringBuilder();
		sb.append(str);
		return sb.reverse().toString().equals(str);
	}
}
3.
package com.itheima;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Test3 {

	/**
	 * @param args
	 * @author NewDemo 3、
	 *         从键盘接受一个数字,列出该数字的中文表示格式,例如:键盘输入123,打印出一二三;键盘输入3103,打印出三一零三。
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		printNumberToChinese();
	}

	/* 思路:运用查表法的思想1.定义键盘录入流,将键盘接收到的数据存到数组中,根据数字与汉字的对应关系遍历数组并打印到屏幕上 */
	public static void printNumberToChinese() {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));// 键盘录入
		while (true) {
			try {
				String line = null;
				if ((line = br.readLine()) != null) {
					if (line.equals("over"))
						break;
					char[] inputNumber = line.toCharArray();
					char[] chineseNumber = { '零', '一', '二', '三', '四', '五', '六',
							'七', '八', '九' };
					for (int x = 0; x < inputNumber.length; x++) {
						int index = Character.getNumericValue(inputNumber[x]);// 将字符转换成整数
						System.out.print(chineseNumber[index]);
					}
				}
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}
4.
package com.itheima;

import java.util.Scanner;

public class Test4 {

	/**
	 * @param args
	 * @author NewDemo 4、 从键盘接受一个数字,打印该数字表示的时间,最大单位到天,例如: 键盘输入6,打印6秒;
	 *         键盘输入60,打印1分; 键盘输入66,打印1分6秒; 键盘输入666,打印11分6秒; 键盘输入3601,打印1小时1秒
	 */
	final static int MINUTE = 60, HOUR = MINUTE * 60, DAY = HOUR * 24;

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		printTime();
	}

	/*
	 * 思路:定义常量DAY,HOUR,MINUTE,将键盘录入的整数inputNumber存起来,根据inputNumbe/DAY得到天数,
	 * inputNumber%DAY的结果再赋值给inputNumber,然后计算小时,分钟
	 */
	public static void printTime() {
		while (true) {
			Scanner scanner = new Scanner(System.in);
			System.out.println("请输入一个小于2^31的正整数:");
			String line = scanner.nextLine();
			if (line.equals("over"))
				break;
			try {
				int inputNumber = Integer.parseInt(line);
				if (inputNumber < 0) {
					throw new Exception();
				}
				System.out.println(getPrint(inputNumber));
			} catch (Exception e) {
				System.out.println("输入值非法,请输入一个小于2^31的正整数!");
			}
		}
		return;
	}

	public static String getPrint(int number) {
		int days = 0, hours = 0, minutes = 0, seconds = 0;
		days = number / DAY;
		number = number % DAY;
		hours = number / HOUR;
		number = number % HOUR;
		minutes = number / MINUTE;
		seconds = number % MINUTE;
		String str = "";
		if (days != 0) {
			str += days + "天";
		}
		if (hours != 0) {
			str += hours + "小时";
		}
		if (minutes != 0) {
			str += minutes + "分钟";
		}
		if (seconds != 0) {
			str += seconds + "秒";
		}
		return str;
	}
}
5.
package com.itheima;

public class Test5 {

	/**
	 * @param args
	 * @author NewDemo 5、 编写一个延迟加载的单例设计模式。
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}

}

/*
 * 思路:饿汉式单例 步骤:1.私有构造函数 2.创建一个私有的对象引用指向为null 3.对外界提供静态方法个体Instance返回此类的对象
 * 4.在方法中加锁防止安全问题
 */
class Single {
	// 私有构造函数,不让外部创建本类对象
	private Single() {
	}

	private static Single single = null;

	// 对外界提供静态方法个体Instance返回本类的对象
	public static Single getInstance() {
		// 在方法中双重判断并加锁防止安全问题也使效率不会太低
		if (single == null)
			synchronized (Single.class) {
				if (single == null)
					single = new Single();
			}
		return single;
	}
}
6.
package com.itheima;

public class Test6 {

	/**
	 * @param args
	 * @author NewDemo 6、 编写一个可以获取文件扩展名的函数,形参接收一个文件名字符串,返回一个扩展名字符串。
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
	}

	/*
	 * 思路:1.拿到字符串倒序第一个'.'的索引index 2.根据String类中的subString方法得到从角标index到结尾的子串
	 * 3.返回得到的子串即文件的扩展名
	 */
	public static String getExtension(String src) {
		int index = src.lastIndexOf(".");// 拿到字符串倒序第一个'.'的索引index
		String dir = src.substring(index + 1);// 根据String类中的subString方法得到从角标index+1到结尾的子串
		return dir;// 返回得到的子串即文件的扩展名
	}
}
7.
package com.itheima;

public class Test7 {

	/**
	 * @param args
	 * @author NewDemo 7、 编程打印所有的3位质数,质数特点:只能被1和其本身整除
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		getPrimeNumber(100, 999);
	}

	/* 思路:让100-999的数模以其他的数,只要遍历从2到平方根的数即可 */
	// 定义方法,传递进要获取质数的范围
	public static void getPrimeNumber(int start, int end) {
		int count = 0;// 因为打印结果较多,所以定义一个计数器,一行打印10个数,然后换行
		for (int i = start; i <= end; i++) {
			boolean flag = false;
			for (int j = 2; j <= Math.sqrt(i); j++) {
				if (i % j == 0) {
					flag = true;
					break;
				}
			}
			if (!flag) {
				System.out.print(i + "  ");
				count++;
				if (count == 10) {
					System.out.println();
					count = 0;// count清零,重新计数
				}
			}
		}
	}
}
8.
package com.itheima;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class Test8 {

	/**
	 * @param args
	 * @author NewDemo 8、 使用带缓冲功能的字节流复制文件。
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try {
			// 输入源文件和副本的路径
			copy("C:\\Users\\Administrator\\Desktop\\黑马程序员\\测试题格式.doc",
					"D:\\3.doc");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public static void copy(String srcPath, String dirPath) throws IOException {
		// 接收源文件路径和副本保存路径并封装成File对象
		File srcFile = new File(srcPath);
		File dirFile = new File(dirPath);
		// 创建流对象并关联文件
		BufferedInputStream bufin = new BufferedInputStream(
				new FileInputStream(srcFile));
		BufferedOutputStream bufout = new BufferedOutputStream(
				new FileOutputStream(dirFile));

		byte[] buf = new byte[1024];
		int len = 0;
		while ((len = bufin.read(buf)) != -1) {
			bufout.write(buf, 0, len);
			bufout.flush();
		}
		bufin.close();
		bufout.close();
	}
}
9.

package com.itheima;

public class Test9 {

	/**
	 * @param args
	 * @author NewDemo 9、 编程实现:猫和狗都会叫,但猫是喵喵的叫,狗是汪汪的叫?
	 *         定义一个动物类,在动物类(animal)中有一个叫的抽象方法。 写两个子类,一个猫一个狗,继承自动物类,并实现相应的抽象方法。
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}
}

/*
 * 思路:1.定义动物类2.定义猫类,并继承动物类 3.定义狗类,并继承动物类
 * 步骤:1.定义的动物类需要abstract修饰,猫类和狗类中覆盖动物类中的抽象方法
 */
// 定义动物类
abstract class Animal {
	abstract void makeASound();
}

// 定义猫类,覆盖叫的方法,打印输出"猫是喵喵的叫"
class Cat extends Animal {
	void makeASound() {
		System.out.println("猫是喵喵的叫");
	}
}

// 定义狗类,覆盖叫方法,打印输出"狗是汪汪的叫"
class Dog extends Animal {
	void makeASound() {
		System.out.println("狗是汪汪的叫");
	}
}
10.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>register_itheima</title>
<!-- 10、编写HTML注册表单,需要字段: 用户名、密码、确认密码,、性别(单选)、 兴趣爱好(多选)、 城市(下拉列表)、 个人简介(文本域)
		使用JavaScript验证这个表单,要求:
        1、 用户名:字母数字或下划线10位以内,只能以字母开头
        2、密码:6-16位任意字符
        3、确认密码:和密码保持一致.
        4、其他项为必填 -->
<style type="text/css">
table {
	border: #000000 1px solid;
	width: 620px;
	height: 420px;
	border-collapse: collapse;
}

table th,table td {
	border: #000000 1px solid;
	padding: 10px;
}

.errorInfo {
	color: #FF0000;
	display: none;
}

.focus {
	border: #0033FF 2px solid;
}

.norm {
	border: #CCCCCC 1px solid;
}

.error {
	border: #FF0000 2px solid;
}
</style>
<script type="text/javascript">
	//输入框动态效果
	function inputColor(input) {
		input.className = "norm";
		input.onfocus = function() {
			this.className = "focus";
		}
	}
	window.onload = function() {
		with (document.forms[0]) {
			inputColor(user);
			inputColor(psw);
			inputColor(repsw);
			inputColor(introduction);
		}
	}
	//用户名校验
	function checkUser(userNode) {
		var regex = /^[a-zA-Z]\w{0,9}$/;
		return check(userNode, regex, "userdiv");
	}
	//密码校验
	function checkPsw(pswNode) {
		var regex = /^[\s\S]{6,16}$/;
		return check(pswNode, regex, "pswdiv");
	}
	//确认密码校验
	function checkRepsw(repswNode) {
		var b = false;
		var repswValue = repswNode.value;
		var pswValue = document.getElementsByName("psw")[0].value;
		var divNode = document.getElementById("repswdiv");
		if (repswValue == pswValue) {
			repswNode.className = "norm";
			divNode.style.display = "none";
			b = true;
		} else {
			repswNode.className = "error";
			divNode.style.display = "block";
		}
		return b;
	}
	//性别校验,当鼠标出了性别选择的行之后就校验,爱好和城市属性同样这样校验
	function checkSex() {
		return checkSelect("sex", "sexdiv");
	}
	//爱好校验
	function checkInterest() {
		return checkSelect("interest", "interestdiv");
	}
	//城市校验
	function checkCountry() {
		var b = false;
		var countryNode = document.getElementsByName("country")[0];
		var divNode = document.getElementById("countrydiv");
		if (countryNode.value == "none") {
			divNode.style.display = "block";
		} else {
			b = true;
			divNode.style.display = "none";
		}
		return b;
	}
	//个人简介校验
	function checkIntroduction(introductionNode) {
		var b = false;
		//var introNode = document.getElementsByName("introduction");
		var introText = introductionNode.value;
		var divNode = document.getElementById("introductiondiv");
		if (introText != "") {
			introductionNode.className = "norm";
			divNode.style.display = "none";
			b = true;
		} else {
			introductionNode.className = "error";
			divNode.style.display = "block";
		}
		return b;
	}
	//抽取出的校验方法,用于校验用户名,密码,确认密码
	function check(inputNode, regex, divId) {
		var b = false;
		var divNode = document.getElementById(divId);
		if (regex.test(inputNode.value)) {
			inputNode.className = "norm";
			divNode.style.display = "none";
			b = true;
		} else {
			inputNode.className = "error";
			divNode.style.display = "block";
		}
		return b;
	}
	//抽取出的方法, 用于校验性别,爱好
	function checkSelect(name, divid) {
		var b = false;
		var nameNodes = document.getElementsByName(name);
		var divNode = document.getElementById(divid);
		divNode.style.display = "block";
		for ( var x = 0; x < nameNodes.length; x++) {
			if (nameNodes[x].checked) {
				b = true;
				divNode.style.display = "none";
				break;
			}
			continue;
		}
		return b;
	}
	//表单提交校验
	function checkForm(formNode) {
		with (formNode) {
			if (checkUser(user) && checkPsw(psw) && checkRepsw(repsw)
					&& checkSex() && checkInterest() && checkCountry()
					&& checkIntroduction(introduction)) {
				event.returnValue = true;
			} else {
				event.returnValue = false;
			}
		}
	}
</script>
</head>

<body>
	<fieldset>
		<legend>注册区域</legend>
		<form onSubmit="checkForm(this)">
			<table background="images/background.jpg">
				<tr>
					<th colspan="2">注册表单</th>
				</tr>

				<tr>
					<td>用户名</td>
					<td>
						<div>
							<input type="text" name="user" onBlur="checkUser(this)" />
							字母数字或下划线10位以内,只能以字母开头
							<div class="errorInfo" id="userdiv">用户名格式错误,请按要求输入</div>
						</div>
					</td>
				</tr>

				<tr>
					<td>密码:</td>
					<td>
						<div>
							<input type="password" name="psw" onBlur="checkPsw(this)" />
							6-16位任意字符组成
							<div class="errorInfo" id="pswdiv">密码格式错误,请重新输入</div>
						</div>
					</td>
				</tr>

				<tr>
					<td>确认密码:</td>
					<td>
						<div>
							<input type="password" name="repsw" onBlur="checkRepsw(this)" />
							<div class="errorInfo" id="repswdiv">两次密码输入不一致</div>
						</div>

					</td>
				</tr>

				<tr onMouseOut="checkSex()">
					<td>性别:</td>
					<td>男<input type="radio" name="sex" value="male" /> 女<input
						type="radio" name="sex" value="female" />
						<div class="errorInfo" id="sexdiv">请选择性别</div>
					</td>
				</tr>

				<tr onMouseOut="checkInterest()">
					<td>爱好:</td>
					<td>打篮球<input type="checkbox" name="interest"
						value="basketball" /> 编程<input type="checkbox" name="interest"
						value="coding" /> 看书<input type="checkbox" name="interest"
						value="reading" /> 游戏<input type="checkbox" name="interest"
						value="game" /> 其他<input type="checkbox" name="interest"
						value="others" />
						<div class="errorInfo" id="interestdiv">请选择爱好</div>
					</td>
				</tr>

				<tr onMouseOut="checkCountry()">
					<td>城市:</td>
					<td><select name="country">
							<option value="none">--选择城市--</option>
							<option value="bj">北京</option>
							<option value="sh">上海</option>
							<option value="gd">广东</option>
							<option value="sz">深圳</option>
							<option value="sz">其他</option>
					</select>
						<div class="errorInfo" id="countrydiv">请选择城市</div></td>
				</tr>

				<tr>
					<td>个人简介:</td>
					<td><textarea style="width: 80%; height: 80px;"
							name="introduction" onBlur="checkIntroduction(this)"></textarea>
						<div class="errorInfo" id="introductiondiv">内容不能为空,请重新输入</div></td>
				</tr>

				<tr>
					<th colspan="2"><input type="submit" value="提交数据" /> <input
						type="reset" value="清楚数据" /></th>
				</tr>
			</table>
		</form>
	</fieldset>
</body>
</html>
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值