《JAVA高级练习题.pdf》由会员分享,可在线阅读,更多相关《JAVA高级练习题.pdf(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 JAVA 高级练习题 Prepared on 21 November 2021 1、编写一个程序,实现从命令行参数输入两个字符串类型的数值,并计算输出两个数值的和。2、编写一个程序,实现从命令行参数输入一字符串,统计该字符串中字符“e”出现的次数。package zuoye;/*输出e的出现次数 */import java.util.Scanner;public class Test2 public static void main(String args)Scanner input=new Scanner(System.in);String str=input.next();int cou
2、nt=0;for(int i=0;i str.length();i+)if(str.charAt(i)=e)count+;System.out.println(e的出现次数是:+count);3、生成十个 0100 之间的随机数,放到数组中,然后排序输出。package zuoye;import java.util.Arrays;/*生成十个0100之间的随机数,放到数组中,然后排序输出 *author Administrator */public class Test3 public static void main(String args)int arr=new int10;/定义一个长度
3、为10的int数组 for(int i=0;i s.lastIndexOf(.)System.out.println(邮箱地址中.出现在的前面);return false;for(int i=0;i=a&s.charAt(i)=A&s.charAt(i)=Z)else System.out.println(用户名里有其他字符);return false;return true;package youxiang;public class Test public static void main(String args)/TODO Auto-generated method stub if(Mai
4、lTest.testMail()System.out.println(邮箱格式合法);else System.out.println(邮箱格式不合法);6、分别在控制台输入字符串和子字符串,并计算字符串中子字符串出现的次数。package zuoye;import java.util.Scanner;/*控制台输入一段字符串,再查询一段子字符串出现的次数 */public class Test6 public static void main(String args)Scanner input=new Scanner(System.in);String a=input.next();Strin
5、g b=input.next();int count=0;/计数器 for(int i=0;ia.length()-b.length();i=a.indexOf(b,i)+1)if(a.indexOf(b,i)!=-1)count+;System.out.println(count);集合类 1、请使用 LinkedList 来模拟一个队列(先进先出的特性):1)拥有放入对象的方法 void put(Object o)2)取出对象的方法 Object get()3)判断队列当中是否为空的方法boolean isEmpty();并且,编写测试代码,验证你的队列是否正确。public class
6、Linkeds List l;Linkeds()l=new LinkedList();public void put(Object o)l.add(o);public Object get()Object o=l.get(0);l.remove(0);return o;public boolean isEmpty()if(l.isEmpty()return true;return false;public static void main(String args)/定义一个空队列 Linkeds l=new Linkeds();/往队列中放入对象 l.put(Tom1);l.put(John2
7、);l.put(Mary3);/如果队列不为空,依次输出队列中的元素 while(!l.isEmpty()(l.get();2、假设顺序列表 ArrayList 中存储的元素是整型数字 15,遍历每个元素,将每个元素顺序输出。package zuoye;import java.util.ArrayList;import java.util.Iterator;import java.util.List;public class Test1 public static void main(String args)List list=new ArrayList();Number n1=new Num
8、ber(1);Number n2=new Number(2);Number n3=new Number(3);Number n4=new Number(4);Number n5=new Number(5);list.add(n1);list.add(n2);list.add(n3);list.add(n4);list.add(n5);Iterator it=list.iterator();while(it.hasNext()(it.next();3、在一个列表中存储以下元素:apple,grape,banana,pear 1)返回集合中的最大的和最小的元素 2)将集合进行排序,并将排序后的结果
9、打印在控制台上 package zuoye;public class Fruit private String fruit;public Fruit()public Fruit(String fruit)this.fruit=fruit;public String getFruit()return fruit;public void setFruit(String fruit)this.fruit=fruit;package zuoye;import java.util.Arrays;import java.util.Collections;import java.util.List;publ
10、ic class FruitTest public static void main(String args)List fruit=Arrays.asList(apple grade banana pear.split();(最大值是:+Collections.max(fruit);(最小值是:+Collections.min(fruit);4、编写一个程序,创建一个 HashMap 对象,用于存储银行储户的信息(其中储户的主要信息有储户的 ID,姓名和余额)。另外,计算并显示其中某个储户的当前余额。package zuoye;public class Bank private String
11、id;private String name;private double money;public Bank()public Bank(String id,String name,double money)this.id=id;this.name=name;this.money=money;public String getId()return id;public void setId(String id)this.id=id;public String getName()return name;public void setName(String name)this.name=name;p
12、ublic double getMoney()return money;public void setMoney(double money)this.money=money;package zuoye;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Set;public class BankTest public static void main(String args)Map map=new HashMap();map.put(用户 1,new Bank(1,张三
13、,Math.random()*100000);map.put(用户 2,new Bank(2,李四,Math.random()*100000);map.put(用户 3,new Bank(3,王五,Math.random()*100000);map.put(用户 4,new Bank(4,赵六,Math.random()*100000);Set keySet=map.keySet();Iterator it=keySet.iterator();double sum=0;while(it.hasNext()Object key=it.next();Bank a=map.get(key);(账户+
14、a.getId()+的余额:+a.getMoney();/计算所有帐户的余额之和 sum+=a.getMoney();(所有账户余额:+sum);5、从控制台输入若干个单词(输入回车结束)放入集合中,将这些单词排序后(忽略大小写)打印出来。package zuoye;import java.util.ArrayList;import java.util.List;import java.util.Scanner;public class Test5 public static void main(String args)Scanner input=new Scanner(System.in);
15、List list=new ArrayList();String str=input.nextLine();String arr=str.split();String tmp;for(int i=0;i arr.length;i+)for(int j=i+1;j 0)str=arrj;arrj=arrj+1;arrj+1=str;for(String a:arr)list.add(a);(a);IO 流 1、在本机的磁盘系统中,找一个文件夹,利用 File 类的提供方法,列出该文件夹中的所有文件的文件名和文件的路径,执行效果如下:-路径名:c:tempdef.txt package 作业;im
16、port;public class Test1 public static void main(String args)File file=new File(E:新建文件夹);String files=file.list();for(String o:files)System.out.println(文件名:+o);System.out.println(路径:+file.getAbsolutePath()+o);System.out.println(-);2、编写一个 java 程序实现文件复制功能,要求将 d:/io/copysrc.doc 中的内容复制到 d:/io/copydes.doc
17、 中。package 作业;import;import;import;/*文件的拷贝 */public class Test2 public static void main(String args)File file=new File(fileabc.txt);File file_back=new File(fileabc_back.txt);try(FileInputStream fi=new FileInputStream(file);FileOutputStream fo=new FileOutputStream(file_back);)int b=-1;while(b=fi.read
18、()!=-1)fo.write(b);catch(Exception e)e.printStackTrace();(拷贝成功!);3、创建 c:/test.txt 文件并在其中输入hello world 创建一个输入流读取该文件中的文本 并且把小写的 l 变成大写 L 再利用输出流写入到 d:test.txt 中 实现步骤:1.在本地硬盘 C 盘下创建一个文件 test.txt 2.创建一个包含 main()方法的类,并在 main 中编写代码 3运行代码并且测试结果 实现过滤器的功能 效果显示:package 作业;import;import;import;import;import;imp
19、ort;/*替换文件中的小写字母 l 为大写字母 L */public class Test3 public static void main(String args)FileReader f;String s=;BufferedReader br=null;try f=new FileReader(F:test.txt);br=new BufferedReader(f);s=br.readLine();(源文件+s);s=s.replace(l,L);catch(FileNotFoundException e)e.printStackTrace();catch(IOException e)e
20、.printStackTrace();finally try br.close();catch(IOException e)e.printStackTrace();BufferedWriter bw=null;(s);try FileWriter fw=new FileWriter(F:test.txt);bw=new BufferedWriter(fw);bw.write(s);catch(IOException e)e.printStackTrace();finally try bw.close();catch(IOException e)e.printStackTrace();4、在程序
21、中创建一个 Student 类型的对象,并把对象信息保存到d:/io/student.txt 文件中,然后再从文件中把 Student 对象的信息读出显示在控制台上,Student 类的描述如下:package 作业;import java.util.Date;public class Student private int id;private String name;private Date birth;public Student()super();public Student(int id,String name,Date birth)super();this.id=id;this.n
22、ame=name;this.birth=birth;public int getId()return id;public void setId(int id)this.id=id;public String getName()return name;public void setName(String name)this.name=name;public Date getBirth()return birth;public void setBirth(Date birth)this.birth=birth;Override public String toString()return Stud
23、ent id=+id+,name=+name+,birth=+birth+;public class SerializationExercise public static void main(String args)Student s1=new Student(1,zhangsan,1999-11-11);try FileOutputStream fos=new FileOutputStream(d:iostudent.txt);ObjectOutputStream oos=new ObjectOutputStream(fos);(对象序列化.);oos.writeObject(s1);oo
24、s.flush();oos.close();catch(FileNotFoundException e1)(e1.getMessage();catch(IOException e2)(e2.getMessage();try FileInputStream fis=new FileInputStream(d:iostudent.txt);ObjectInputStream ois=new ObjectInputStream(fis);(反序列化.);Student ss1=(Student)ois.readObject();(ss1);ois.close();catch(FileNotFound
25、Exception e)(e.getMessage();catch(IOException e)(e.getMessage();catch(ClassNotFoundException e)(e.getMessage();多线程 1、利用 Thread 实现,要求多线程求解某范围素数每个线程负责 1000 范围:线程 1 找 1-1000;线程 2 找 1001-2000;线程 3 找 2001-3000。编程程序将每个线程找到的素数及时打印。package 找素数;public class Number private int num;public Number()super();publi
26、c Number(int num)super();this.num=num;public int getNum()return num;public void setNum(int num)this.num=num;public synchronized void checkNum(int num)if(num=1000)for(int n=2;n=num;n+)boolean b=true;if(n!=1)for(int i=2;i n;i+)if(n%i=0)b=false;break;if(b)System.out.println(n+是质数);if(num=2000)for(int n
27、=1001;n=num;n+)boolean b=true;if(n!=1)for(int i=2;i n;i+)if(n%i=0)b=false;break;if(b)System.out.println(n+是质数);if(num=3000)for(int n=2001;n=num;n+)boolean b=true;if(n!=1)for(int i=2;i n;i+)if(n%i=0)b=false;break;if(b)System.out.println(n+是质数);package 找素数;/public class Numbers1 implements Runnable pu
28、blic class Numbers1 extends Thread private Number num;public Numbers1(Number num)this.num=num;public void run()num.checkNum(1000);package 找素数;/public class Numbers1 implements Runnable public class Numbers2 extends Thread private Number num;public Numbers2(Number num)this.num=num;public void run()nu
29、m.checkNum(2000);package 找素数;/public class Numbers1 implements Runnable public class Numbers3 extends Thread private Number num;public Numbers3(Number num)this.num=num;public void run()num.checkNum(3000);package 找素数;public class Test public static void main(String args)Number num=new Number();Number
30、s1 n1=new Numbers1(num);Thread t1=new Thread(n1);t1.setName(11000:);t1.start();Numbers2 n2=new Numbers2(num);Thread t2=new Thread(n2);t2.setName(10012000:);t2.start();Numbers3 n3=new Numbers3(num);Thread t3=new Thread(n3);t3.setName(20013000);t3.start();2、利用 Runnable 实现,要求多线程求解某范围素数每个线程负责 1000 范围:线程
31、 1 找 1-1000;线程 2 找 1001-2000;线程 3 找 2001-3000。编程程序将每个线程找到的素数及时打印。与第一题相同,不再贴出代码,第一题注释即为修改处。3、编写一个 Java 程序(包括一个主程序类,一个线程类。在主程序类中创建 2个线程,将其中一个线程的优先级设为 10,另一个线程的优先级设为 6。让优先级为 10 的线程打印 200 次“线程 1 正在运行”,优先级为 6 的线程打印 200次“线程 2 正在运行”。package 优先级;public class Main private int num;public int getNum()return nu
32、m;public void setNum(int num)this.num=num;public Main()super();public Main(int num)super();this.num=num;public void dayin(int num)for(int i=0;inum;i+)System.out.println(Thread.currentThread().getName()+正在运行);package 优先级;public class Xiancheng1 implements Runnable private Main num;public Xiancheng1()
33、super();public Xiancheng1(Main num)this.num=num;Override public void run()num.dayin(200);package 优先级;public class Xiancheng2 implements Runnable private Main num;public Xiancheng2()super();public Xiancheng2(Main num)this.num=num;Override public void run()num.dayin(200);package 优先级;public class Test
34、public static void main(String args)Main num=new Main();Xiancheng1 x1=new Xiancheng1(num);Thread t1=new Thread(x1);t1.setPriority(10);t1.setName(线程1);t1.start();Xiancheng2 x2=new Xiancheng2(num);Thread t2=new Thread(x2);t2.setPriority(6);t2.setName(线程2);t2.start();4、编写一个计时器,每隔一秒钟,在控制台打印出最新时间。package
35、 计时器;import java.text.SimpleDateFormat;import java.util.Date;public class Main private Date date;public Main()super();/TODO Auto-generated constructor stub public Main(Date date)super();this.date=date;public Date getDate()return date;public void setDate(Date date)this.date=date;public void getDay()w
36、hile(true)Date date=new Date();SimpleDateFormat num=new SimpleDateFormat(hh:mm:ss);String dateString=num.format(date);(Thread.currentThread().getName()+dateString);try Thread.sleep(1000);catch(InterruptedException e)e.printStackTrace();package 计时器;public class Clock implements Runnable private Main num;public Clock()super();public Clock(Main num)super();this.num=num;Override public void run()num.getDay();package 计时器;public class Test public static void main(String args)Main num=new Main();Clock c=new Clock(num);Thread t=new Thread(c);t.setName(当前时间为:);t.start();