JAVA高级练习题Word文档下载推荐.docx
《JAVA高级练习题Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《JAVA高级练习题Word文档下载推荐.docx(28页珍藏版)》请在冰豆网上搜索。
i++){
arr[i]=(int)(Math.random()*100);
//取0~1的随机数*100,即为0~100的随机数
Arrays.sort(arr);
//排序方法
for(inta:
arr)//增强for循环
System.out.print(a+"
"
);
4、巴黎时间比北京时间晚7个小时,纽约时间比北京时间晚12个小时,试编写一程序,根据输入的北京时间输出相应的巴黎和纽约时间。
importjava.util.Calendar;
importjava.util.Date;
publicclassTest4{
publicvoidgetTime(inty,intm,intd,inth,intmi,ints){
//获取Calendar实例
Calendartime=Calendar.getInstance();
//设置巴黎时间
time.set(y,m,d,h-7,mi,s);
//输出巴黎时间
巴黎时间是"
+time.get(Calendar.YEAR)+"
年"
+
((time.get(Calendar.MONTH)))+"
月"
time.get(Calendar.DAY_OF_MONTH)+"
日"
time.get(Calendar.HOUR_OF_DAY)+"
时"
time.get(Calendar.MINUTE)+"
分"
time.get(Calendar.SECOND)+"
秒"
//设置纽约时间
time.set(y,m,d,h-12,mi);
//输出纽约时间
纽约时间是"
time.get(Calendar.SECOND)+"
Test4time=newTest4();
//设置北京时间
time.getTime(2018,3,15,16,53,9);
5、解析一个邮箱地址是否合法,如果合法则打印出用户名部分和该邮箱所属的网站域名
如果邮箱地址不合法则显示不合法的原因
提示:
邮箱地址不合法的因素:
1)邮箱地址中不包含@或。
2)邮箱地址中含有多了@或。
3)邮箱地址中。
出现在@的前面
4)用户名里有其他字符
实现步骤:
(1)创建一个类,类名:
mailtest
类图如下:
(类名和方法名必须与要求一样。
区分大小写)
packageyouxiang;
publicclassMailTest{
publicstaticbooleantestMail(){
Strings=input.next();
if(s.indexOf("
@"
)==-1||s.indexOf("
."
)==-1)
System.out.println("
邮箱地址中不包含@或."
returnfalse;
)!
=s.lastIndexOf("
)||s.indexOf("
))
邮箱地址中含有多余的@或."
)>
s.lastIndexOf("
邮箱地址中.出现在@的前面"
for(inti=0;
i<
s.indexOf("
i++)
if((s.charAt(i)>
='
a'
&
s.charAt(i)<
z'
)||(s.charAt(i)>
A'
Z'
}else
System.out.println("
用户名里有其他字符"
returnfalse;
}
returntrue;
publicclassTest{
//TODOAuto-generatedmethodstub
if(MailTest.testMail()){
邮箱格式合法"
}else{
邮箱格式不合法"
6、分别在控制台输入字符串和子字符串,并计算字符串中子字符串出现的次数。
*控制台输入一段字符串,再查询一段子字符串出现的次数
publicclassTest6{
Stringa=input.next();
Stringb=input.next();
intcount=0;
//计数器
for(inti=0;
a.length()-b.length();
i=a.indexOf(b,i)+1)
if(a.indexOf(b,i)!
=-1)
System.out.println(count);
集合类
1、请使用LinkedList来模拟一个队列(先进先出的特性):
1)拥有放入对象的方法voidput(Objecto)
2)取出对象的方法Objectget()
3)判断队列当中是否为空的方法booleanisEmpty();
并且,编写测试代码,验证你的队列是否正确。
publicclassLinkeds{
Listl;
Linkeds(){
l=newLinkedList();
publicvoidput(Objecto){
l.add(o);
publicObjectget(){
Objecto=l.get(0);
l.remove(0);
returno;
publicbooleanisEmpty(){
if(l.isEmpty()){
returntrue;
returnfalse;
publicstaticvoidmain(String[]args){
//定义一个空队列
Linkedsl=newLinkeds();
//往队列中放入对象
l.put("
Tom1"
John2"
Mary3"
//如果队列不为空,依次输出队列中的元素
while(!
l.isEmpty()){
System.out.println(l.get());
2、假设顺序列表ArrayList中存储的元素是整型数字1~5,遍历每个元素,将每个元素顺序输出。
importjava.util.ArrayList;
importjava.util.Iterator;
importjava.util.List;
publicclassTest1{
List<
Number>
list=newArrayList<
>
();
Numbern1=newNumber
(1);
Numbern2=newNumber
(2);
Numbern3=newNumber(3);
Numbern4=newNumber(4);
Numbern5=newNumber(5);
list.add(n1);
list.add(n2);
list.add(n3);
list.add(n4);
list.add(n5);
Iteratorit=list.iterator();
while(it.hasNext())
System.out.print(it.next());
3、在一个列表中存储以下元素:
apple,grape,banana,pear
1)返回集合中的最大的和最小的元素
2)将集合进行排序,并将排序后的结果打印在控制台上
publicclassFruit{
privateStringfruit;
publicFruit()
{
publicFruit(Stringfruit)
this.fruit=fruit;
publicStringgetFruit(){
returnfruit;
publicvoidsetFruit(Stringfruit){
this.fruit=fruit;
importjava.util.Collections;
publicclassFruitTest{
Listfruit=Arrays.asList("
applegradebananapear"
.split("
));
最大值是:
+Collections.max(fruit));
最小值是:
+Collections.min(fruit));
4、编写一个程序,创建一个
HashMap对象,用于存储银行储户的信息(其中储户的主要信息有储户的ID,姓名和余额)。
另外,计算并显示其中某个储户的当前余额。
publicclassBank{
privateStringid;
privateStringname;
privatedoublemoney;
publicBank()
publicBank(Stringid,Stringname,doublemoney)
this.id=id;
this.name=name;
this.money=money;
publicStringgetId(){
returnid;
publicvoidsetId(Stringid){
this.id=id;
publicStringgetName(){
returnname;
publicvoidsetName(Stringname){
this.name=name;
publicdoublegetMoney(){
returnmoney;
publicvoidsetMoney(doublemoney){
this.money=money;
importjava.util.HashMap;
importjava.util.Map;
importjava.util.Set;
publicclassBankTest{
Map<
String,Bank>
map=newHashMap<
map.put("
用户1"
newBank("
1"
"
张三"
Math.random()*100000));
用户2"
2"
李四"
用户3"
3"
王五"
用户4"
4"
赵六"
SetkeySet=map.keySet();
Iteratorit=keySet.iterator();
doublesum=0;
while(it.hasNext()){
Objectkey=it.next();
Banka=map.get(key);
账户"
+a.getId()+"
的余额:
+a.getMoney());
//计算所有帐户的余额之和
sum+=a.getMoney();
所有账户余额:
+sum);
5、从控制台输入若干个单词(输入回车结束)放入集合中,将这些单词排序后(忽略大小写)打印出来。
publicclassTest5{
String>
list=newArrayList<
Stringstr=input.nextLine();
String[]arr=str.split("
Stringtmp;
for(intj=i+1;
j<
arr.length-1;
j++){
if(arr[i].compareToIgnoreCase(arr[j])>
0){
str=arr[j];
arr[j]=arr[j+1];
arr[j+1]=str;
}
for(Stringa:
arr){
list.add(a);
System.out.println(a);
IO流
1、在本机的磁盘系统中,找一个文件夹,利用File类的提供方法,列出该文件夹中的所有文件的文件名和文件的路径,执行效果如下:
-
路径名:
c:
\temp\def.txt
package作业;
importjava.io.File;
Filefile=newFile("
E:
\\新建文件夹"
String[]files=file.list();
for(Stringo:
files){
文件名:
+o);
路径:
+file.getAbsolutePath()+"
\\"
--------------------------------------"
2、编写一个java程序实现文件复制功能,要求将d:
/io/copysrc.doc中的内容复制到d:
/io/copydes.doc中。
importjava.io.FileInputStream;
importjava.io.FileOutputStream;
*文件的拷贝
file\\abc.txt"
Filefile_back=newFile("
file\\abc_back.txt"
try(FileInputStreamfi=newFileInputStream(file);
FileOutputStreamfo=newFileOutputStream(file_back);
){
intb=-1;
while((b=fi.read())!
=-1){
fo.write(b);
}catch(Exceptione){
e.printStackTrace();
拷貝成功!
3、创建c:
/test.txt文件并在其中输入"
helloworld"
创建一个输入流读取该文件中的文本
并且把小写的l变成大写L再利用输出流写入到d:
\test.txt中
1.在本地硬盘C盘下创建一个文件test.txt
2.创建一个包含main()方法的类,并在main中编写代码
3.运行代码并且测试结果
实现过滤器的功能
效果显示:
importjava.io.BufferedReader;
importjava.io.BufferedWriter;
importjava.io.FileNotFoundException;
importjava.io.FileReader;
importjava.io.FileWriter;
importjava.io.IOException;
*替换文件中的小写字母l为大写字母L
FileReaderf;
Strings="
;
BufferedReaderbr=null;
try{
f=newFileReader("
F:
\\test.txt"
br=newBufferedReader(f);
s=br.readLine();
源文件"
+s);
s=s.replace("
l"
"
L"
}catch(FileNotFoundExceptione){
}catch(IOExceptione){
}finally{
try{
br.close();
}catch(IOExceptione){
e.printStackTrace();
BufferedWriterbw=null;
System.out.println(s);
FileWrite