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>