版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
java基础考试题及答案详解Java基础考试题及答案详解一、选择题(30分)1.Java语言的特点不包括以下哪一项?A.面向对象B.跨平台C.多线程D.单继承答案:【D】解析:Java语言具有面向对象、跨平台、多线程等特点,但Java不支持多继承,只支持单继承,通过接口可以实现多重继承的效果。因此D选项是正确的。2.下列哪个不是Java的基本数据类型?A.intB.StringC.charD.double答案:【B】解析:Java的基本数据类型包括整数类型(byte,short,int,long)、浮点类型(float,double)、字符类型(char)和布尔类型(boolean)。String是Java的引用类型,不是基本数据类型。因此B选项是正确的。3.在Java中,下列哪个关键字用于抛出异常?A.tryB.catchC.throwD.finally答案:【C】解析:在异常处理中,try-catch-finally用于捕获和处理异常,而throw关键字用于手动抛出异常。因此C选项是正确的。4.下列哪个方法在Object类中定义,且不是final方法?A.equals()B.getClass()C.wait()D.toString()答案:【D】解析:在Object类中,equals()、getClass()、wait()等方法都是final方法,而toString()不是final方法,可以被子类重写。因此D选项是正确的。5.关于Java中的接口,下列说法正确的是?A.接口可以包含实例变量B.接口中的方法默认是publicabstractC.接口可以包含构造方法D.一个类可以实现多个接口,但不能继承其他类答案:【B】解析:接口中的方法默认是publicabstract,不能包含实例变量(可以包含常量),不能包含构造方法,一个类可以实现多个接口,同时也可以继承其他类。因此B选项是正确的。6.在Java中,下列哪个集合类是线程安全的?A.ArrayListB.HashMapC.HashSetD.Vector答案:【D】解析:在Java集合框架中,Vector是线程安全的,而ArrayList、HashMap、HashSet都是非线程安全的。如果需要线程安全的集合,可以使用Collections工具类中的同步方法包装这些集合。因此D选项是正确的。7.下列哪个不是Java的访问修饰符?A.publicB.privateC.protectedD.package答案:【D】解析:Java的访问修饰符包括public、private、protected和默认(无修饰符,也称为package-friendly)。package不是Java的访问修饰符。因此D选项是正确的。8.在Java中,下列哪个关键字用于定义一个接口?A.interfaceB.implementsC.extendsD.class答案:【A】解析:在Java中,使用interface关键字来定义接口,implements关键字用于实现接口,extends关键字用于继承类或接口,class关键字用于定义类。因此A选项是正确的。9.关于Java中的final关键字,下列说法错误的是?A.final修饰的类不能被继承B.final修饰的方法不能被重写C.final修饰的变量一旦赋值就不能再修改D.final修饰的引用变量所指向的对象内容可以修改答案:【C】解析:final修饰的类不能被继承,final修饰的方法不能被重写,final修饰的引用变量所指向的对象内容可以修改,但引用变量本身不能再指向其他对象。对于基本数据类型,final修饰的变量一旦赋值就不能再修改;但对于引用类型,final只是确保引用不变,对象内容仍可修改。因此C选项是错误的。10.在Java中,下列哪个方法用于创建一个新的线程?A.start()B.run()C.execute()D.begin()答案:【A】解析:在Java中,start()方法用于创建一个新的线程并启动它,run()方法是线程执行的方法,execute()方法通常用于执行任务(如在ExecutorService中),begin()不是Java中的标准方法。因此A选项是正确的。11.关于Java中的异常处理,下列说法正确的是?A.Error类型的异常可以被捕获和处理B.RuntimeException是受检异常C.try块中可以没有catch块D.一个try块可以对应多个catch块答案:【D】解析:Error类型的异常通常表示严重的问题,不应该被捕获和处理;RuntimeException是非受检异常;try块中至少有一个catch块或finally块;一个try块可以对应多个catch块,用于处理不同类型的异常。因此D选项是正确的。12.在Java中,下列哪个方法用于获取当前系统时间?A.System.currentTimeMillis()B.System.getTime()C.Date.now()D.Time.getCurrent()答案:【A】解析:在Java中,System.currentTimeMillis()方法用于获取当前系统时间的毫秒数;System.getTime()不存在;Date.now()不是标准方法;Time.getCurrent()也不是标准方法。因此A选项是正确的。13.关于Java中的泛型,下列说法正确的是?A.泛型可以用于基本数据类型B.泛型类型参数只能是类类型C.泛型在运行时会被擦除D.泛型可以用于异常类答案:【C】解析:泛型不能用于基本数据类型(需要使用包装类);泛型类型参数只能是类类型或接口类型;泛型在运行时会被擦除(类型擦除);泛型不能用于异常类。因此C选项是正确的。14.在Java中,下列哪个方法用于将字符串转换为整数?A.Integer.parseInt()B.Integer.valueOf()C.String.toInt()D.Number.toInt()答案:【A】解析:在Java中,Integer.parseInt()方法用于将字符串转换为基本类型int;Integer.valueOf()方法用于将字符串包装为Integer对象;String.toInt()不是标准方法;Number.toInt()也不是标准方法。因此A选项是正确的。15.关于Java中的垃圾回收,下列说法正确的是?A.垃圾回收可以立即回收所有不再使用的对象B.可以通过System.gc()方法强制立即进行垃圾回收C.finalize()方法在对象被垃圾回收前调用D.垃圾回收是由程序员手动控制的答案:【C】解析:垃圾回收不是立即执行的,而是由JVM决定何时执行;System.gc()只是建议JVM进行垃圾回收,但不保证立即执行;finalize()方法在对象被垃圾回收前调用;垃圾回收是由JVM自动控制的,不是由程序员手动控制的。因此C选项是正确的。二、填空题(20分)1.Java语言的三大特性是:封装、______和______。答案:【继承,多态】解析:Java语言的三大特性是封装、继承和多态。封装是将数据和操作数据的方法绑定在一起,继承允许一个类继承另一个类的属性和方法,多态允许不同类的对象对同一消息做出响应。这是Java面向对象编程的基础概念。2.在Java中,使用______关键字可以声明一个常量。答案:【final】解析:在Java中,使用final关键字可以声明一个常量。一旦被final修饰的变量被初始化后,其值就不能再被修改。常量通常使用大写字母和下划线命名,例如:finalintMAX_VALUE=100;。3.Java程序的入口点是______方法。答案:【main】解析:Java程序的入口点是main方法,其标准签名是publicstaticvoidmain(String[]args)。Java虚拟机在运行程序时,会首先查找并执行main方法。这是每个Java应用程序都必须具备的方法。4.在Java中,使用______关键字可以捕获并处理异常。答案:【try-catch】解析:在Java中,使用try-catch关键字可以捕获并处理异常。try块中包含可能抛出异常的代码,catch块中包含处理特定类型异常的代码。这种机制可以防止程序因未处理的异常而意外终止。5.Java中,______接口是所有集合框架的根接口。答案:【Collection】解析:在Java集合框架中,Collection接口是所有集合的根接口,它定义了集合的基本操作,如添加、删除、遍历等。List和Set接口都继承自Collection接口,而Map接口是独立的接口,不继承自Collection。6.在Java中,使用______关键字可以声明一个接口。答案:【interface】解析:在Java中,使用interface关键字可以声明一个接口。接口是一种特殊的抽象类型,只包含常量和抽象方法。类可以通过implements关键字实现一个或多个接口。7.Java中,______类是所有类的超类。答案:【Object】解析:在Java中,Object类是所有类的超类,如果没有显式地继承其他类,则默认继承Object类。Object类提供了一些基本方法,如equals()、hashCode()、toString()等,这些方法可以被所有类重写。8.在Java中,使用______关键字可以创建一个新线程。答案:【Thread】解析:在Java中,使用Thread类或其子类可以创建一个新线程。有两种方式创建线程:一种是继承Thread类并重写run()方法,另一种是实现Runnable接口并将其传递给Thread类的构造函数。9.Java中,______包包含了基本的I/O操作类。答案:【java.io】解析:在Java中,java.io包包含了基本的I/O操作类,如InputStream、OutputStream、Reader、Writer等。这些类提供了对文件、控制台、网络等I/O设备的读写操作。10.在Java中,______关键字用于声明一个抽象类或抽象方法。答案:【abstract】解析:在Java中,abstract关键字用于声明一个抽象类或抽象方法。抽象类不能被实例化,可以包含抽象方法(没有实现的方法)。子类必须实现抽象类的所有抽象方法,除非子类也是抽象类。三、简答题(20分)1.简述Java中接口和抽象类的区别。答案:接口和抽象类都是Java中实现抽象的方式,但有以下区别:(1)继承关系:类只能继承一个抽象类,但可以实现多个接口;(2)成员变量:抽象类可以包含成员变量(可以是各种类型),而接口中的变量默认是publicstaticfinal的常量;(3)方法实现:抽象类可以包含已实现的方法和抽象方法,而接口中的方法默认是publicabstract的(Java8之后可以包含default和static方法);(4)构造方法:抽象类可以有构造方法,接口不能有构造方法;(5)访问修饰符:抽象类中的方法可以使用各种访问修饰符,接口中的方法默认是public;(6)设计目的:抽象类用于"是一个"的关系(is-a),接口用于"能够做"的关系(can-do)。解析:接口和抽象类的主要区别在于它们的特性和使用场景。抽象类更接近类的概念,可以有状态(成员变量)和行为(方法实现),适合表示具有共同特征的实体集合;而接口更侧重于描述功能,适合表示对象能够执行的操作。理解这些区别有助于在设计中做出正确的选择,遵循"接口隔离原则"和"里氏替换原则"等设计原则。2.解释Java中的多态及其实现机制。答案:多态是面向对象编程的三大特性之一,指的是同一个接口,使用不同的实例而执行不同操作的能力。在Java中,多态主要通过以下方式实现:(1)继承:子类继承父类,重写父类的方法;(2)接口实现:类实现接口,提供接口方法的实现;(3)方法重写(Override):子类重写父类的方法,提供特定的实现;(4)方法重载(Overload):在同一个类中定义多个同名但参数列表不同的方法;多态的实现依赖于两个Java机制:动态绑定和方法重写。当通过父类引用调用方法时,JVM会在运行时确定实际调用的方法,这就是动态绑定。解析:多态是面向对象编程的核心概念之一,它允许程序在运行时根据对象的实际类型来调用相应的方法。这种机制提高了代码的灵活性和可扩展性。理解多态需要区分方法重写和方法重载:方法重写发生在子类和父类之间,用于实现多态;方法重载发生在同一个类中,用于提供相同功能但参数不同的方法。多态的实现依赖于JVM的动态绑定机制,这也是Java实现"一次编写,到处运行"的关键特性之一。3.说明Java中的异常处理机制及其重要性。答案:Java中的异常处理机制是一种结构化的错误处理方式,主要包括以下组成部分:(1)异常类层次结构:Java中的所有异常类都继承自Throwable类,分为Error和Exception两大类;(2)try-catch-finally块:try块包含可能抛出异常的代码,catch块处理特定类型的异常,finally块包含无论是否发生异常都会执行的代码;(3)throw关键字:用于手动抛出异常;(4)throws关键字:用于声明方法可能抛出的异常;异常处理机制的重要性体现在:(1)提高程序的健壮性:通过捕获和处理异常,可以防止程序因未处理的异常而意外终止;(2)增强代码的可读性:将错误处理代码与正常业务逻辑分离,使代码结构更清晰;(3)便于调试:异常信息提供了错误发生的位置和原因,有助于快速定位和解决问题;(4)支持错误恢复:通过异常处理,可以在错误发生后采取适当的恢复措施,而不是简单地终止程序。解析:异常处理是Java程序设计的重要组成部分,它提供了一种结构化的错误处理方式。理解异常处理机制需要区分受检异常和非受检异常:受检异常必须在编译时被处理(使用try-catch或throws声明),而非受检异常(如RuntimeException)通常是由程序逻辑错误引起的,可以选择处理或不处理。正确使用异常处理机制可以大大提高程序的健壮性和可维护性,但过度使用异常或不当使用也会影响程序性能,因此需要根据实际情况合理设计异常处理策略。4.解释Java中的集合框架及其主要接口和实现类。答案:Java集合框架是一组接口和类,用于存储和操作对象集合。它位于java.util包中,主要包含以下组件:(1)根接口:Collection接口和Map接口;(2)Collection的子接口:-List接口:有序、可重复的集合,主要实现类有ArrayList、LinkedList和Vector;-Set接口:无序、不可重复的集合,主要实现类有HashSet、TreeSet和LinkedHashSet;(3)Map接口:键值对映射,主要实现类有HashMap、TreeMap、Hashtable和LinkedHashMap;(4)工具类:Collections类和Arrays类,提供了各种操作集合和数组的静态方法;各实现类的特点:-ArrayList:基于动态数组,随机访问快,插入删除慢;-LinkedList:基于链表,插入删除快,随机访问慢;-Vector:线程安全的动态数组;-HashSet:基于哈希表,无序,查找快;-TreeSet:基于红黑树,有序,查找效率高;-HashMap:基于哈希表,键值对存储,查找快;-TreeMap:基于红黑树,键值对存储,按键排序;解析:Java集合框架是Java编程中非常重要的部分,它提供了各种数据结构的实现,使开发者可以高效地存储和操作数据。选择合适的集合类对于程序的性能至关重要,需要考虑数据的特性(如是否有序、是否可重复)、操作需求(如频繁的随机访问或插入删除)以及线程安全性等因素。理解各种集合类的实现原理和性能特点,可以帮助开发者做出正确的选择,编写出高效、可维护的代码。四、编程题(20分)1.编写一个Java程序,实现一个简单的图书管理系统,包含以下功能:-定义一个Book类,包含图书ID、书名、作者和价格属性-实现一个BookManager类,使用ArrayList存储图书信息-提供添加图书、删除图书、查找图书和显示所有图书的方法-在main方法中测试这些功能答案:```javaimportjava.util.ArrayList;importjava.util.Scanner;//Book类classBook{privateintid;privateStringtitle;privateStringauthor;privatedoubleprice;publicBook(intid,Stringtitle,Stringauthor,doubleprice){this.id=id;this.title=title;this.author=author;this.price=price;}//getter方法publicintgetId(){returnid;}publicStringgetTitle(){returntitle;}publicStringgetAuthor(){returnauthor;}publicdoublegetPrice(){returnprice;}@OverridepublicStringtoString(){return"ID:"+id+",书名:"+title+",作者:"+author+",价格:"+price;}}//BookManager类classBookManager{privateArrayList<Book>books;publicBookManager(){books=newArrayList<>();}//添加图书publicvoidaddBook(Bookbook){books.add(book);System.out.println("图书添加成功!");}//删除图书publicvoiddeleteBook(intid){booleanfound=false;for(inti=0;i<books.size();i++){if(books.get(i).getId()==id){books.remove(i);found=true;System.out.println("图书删除成功!");break;}}if(!found){System.out.println("未找到ID为"+id+"的图书!");}}//查找图书publicBookfindBook(intid){for(Bookbook:books){if(book.getId()==id){returnbook;}}returnnull;}//显示所有图书publicvoiddisplayAllBooks(){if(books.isEmpty()){System.out.println("图书馆中没有图书!");}else{System.out.println("所有图书列表:");for(Bookbook:books){System.out.println(book);}}}}//主类publicclassLibraryManagementSystem{publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);BookManagermanager=newBookManager();while(true){System.out.println("\n=====图书管理系统=====");System.out.println("1.添加图书");System.out.println("2.删除图书");System.out.println("3.查找图书");System.out.println("4.显示所有图书");System.out.println("5.退出");System.out.print("请选择操作:");intchoice=scanner.nextInt();scanner.nextLine();//消耗换行符switch(choice){case1:System.out.print("请输入图书ID:");intid=scanner.nextInt();scanner.nextLine();//消耗换行符System.out.print("请输入书名:");Stringtitle=scanner.nextLine();System.out.print("请输入作者:");Stringauthor=scanner.nextLine();System.out.print("请输入价格:");doubleprice=scanner.nextDouble();scanner.nextLine();//消耗换行符Bookbook=newBook(id,title,author,price);manager.addBook(book);break;case2:System.out.print("请输入要删除的图书ID:");intdeleteId=scanner.nextInt();scanner.nextLine();//消耗换行符manager.deleteBook(deleteId);break;case3:System.out.print("请输入要查找的图书ID:");intfindId=scanner.nextInt();scanner.nextLine();//消耗换行符BookfoundBook=manager.findBook(findId);if(foundBook!=null){System.out.println("找到图书:"+foundBook);}else{System.out.println("未找到ID为"+findId+"的图书!");}break;case4:manager.displayAllBooks();break;case5:System.out.println("感谢使用图书管理系统,再见!");scanner.close();return;default:System.out.println("无效的选项,请重新输入!");}}}}```解析:这个程序实现了一个简单的图书管理系统,包含Book类和BookManager类。Book类封装了图书的基本属性,BookManager类使用ArrayList存储图书信息并提供了添加、删除、查找和显示图书的方法。主类LibraryManagementSystem提供了一个简单的命令行界面,让用户可以交互式地使用这些功能。这个程序展示了Java面向对象编程的基本概念,如类、对象、封装和集合的使用。需要注意的是,在实际应用中,还需要考虑数据持久化、输入验证、异常处理等更复杂的功能。2.编写一个Java程序,实现一个简单的多线程下载器,要求:-创建一个DownloadTask类,实现Runnable接口,模拟下载过程-在主程序中创建多个DownloadTask实例,每个实例负责下载不同的文件-使用线程池管理下载任务-显示每个下载任务的进度和完成状态答案:```javaimportjava.util.concurrent.ExecutorService;importjava.util.concurrent.Executors;importjava.util.concurrent.TimeUnit;//下载任务类classDownloadTaskimplementsRunnable{privateStringfileName;privateintfileSize;privateintdownloadedSize=0;publicDownloadTask(StringfileName,intfileSize){this.fileName=fileName;this.fileSize=fileSize;}@Overridepublicvoidrun(){System.out.println("开始下载文件:"+fileName+"(大小:"+fileSize+"KB)");try{//模拟下载过程while(downloadedSize<fileSize){//模拟下载速度,每100毫秒下载1KBThread.sleep(100);downloadedSize++;//显示下载进度intprogress=(downloadedSize100)/fileSize;System.out.printf("%s:下载进度[%d%%]%n",fileName,progress);//模拟随机下载失败if(Math.random()<0.05&&downloadedSize<fileSize){thrownewException("下载失败,网络连接中断");}}//下载完成System.out.println("文件"+fileName+"下载完成!");}catch(Exceptione){System.out.println("文件"+fileName+"下载失败:"+e.getMessage());}}publicbooleanisCompleted(){returndownloadedSize>=fileSize;}publicintgetProgress(){return(downloadedSize100)/fileSize;}}//下载管理器类classDownloadManager{privateExecutorServiceexecutor;publicDownloadManager(intthreadCount){//创建固定大小的线程池executor=Executors.newFixedThreadPool(threadCount);}publicvoidaddTask(DownloadTasktask){executor.execute(task);}publicvoidshutdown(){executor.shutdown();try{//等待所有任务完成,最多等待1小时if(!executor.awaitTermination(1,TimeUnit.HOURS)){executor.shutdownNow();}}catch(InterruptedExceptione){executor.shutdownNow();Thread.currentThread().interrupt();}}publicbooleanisAllCompleted(){returnexecutor.isTerminated();}}//主程序publicclassMultiThreadDownloader{publicstaticvoidmain(String[]args){//创建下载管理器,使用4个线程DownloadManagermanager=newDownloadManager(4);//添加下载任务manager.addTask(newDownloadTask("file1.zip",50));manager.addTask(newDownloadTask("file2.pdf",100));manager.addTask(newDownloadTask("file3.mp4",200));manager.addTask(newDownloadTask("file4.jpg",30));manager.addTask(newDownloadTask("file5.exe",150));//关闭下载管理器,等待所有任务完成manager.shutdown();//检查所有任务是否完成if(manager.isAllCompleted()){System.out.println("所有下载任务已完成!");}}}```解析:这个程序实现了一个简单的多线程下载器,展示了Java多线程编程的基本概念和线程池的使用。DownloadTask类实现了Runnable接口,模拟了文件下载的过程,包括下载进度显示和随机失败处理。DownloadManager类使用线程池来管理多个下载任务,提供了添加任务和关闭管理器的方法。主程序创建了下载管理器并添加了多个下载任务,然后等待所有任务完成。这个程序展示了Java并发编程的基本特性,如线程的创建、执行和同步,以及线程池的使用。在实际应用中,还需要考虑更复杂的错误处理、断点续传、速度限制等功能。五、综合应用题(10分)1.设计一个简单的银行账户管理系统,要求使用面向对象的思想,考虑以下功能:-账户类(Account)包含账户号、账户持有人姓名、账户余额等属性-支持存款、取款、查询余额等基本操作-实现账户转账功能-处理各种异常情况(如余额不足、无效金额等)-使用集合存储多个账户,并提供账户查找功能-实现线程安全的账户操作,防止并发问题答案:```javaimportjava.util.HashMap;importjava.util.Map;importjava.util.Scanner;importjava.util.concurrent.locks.Lock;importjava.util.concurrent.locks.ReentrantLock;//自定义异常类classInsufficientBalanceExceptionextendsException{publicInsufficientBalanceException(Stringmessage){super(message);}}classInvalidAmountExceptionextendsException{publicInvalidAmountException(Stringmessage){super(message);}}//账户类classAccount{privateStringaccountNumber;privateStringaccountHolder;privatedoublebalance;privatefinalLocklock=newReentrantLock();publicAccount(StringaccountNumber,StringaccountHolder,doubleinitialBalance){this.accountNumber=accountNumber;this.accountHolder=accountHolder;this.balance=initialBalance;}//存款publicvoiddeposit(doubleamount)throwsInvalidAmountException{lock.lock();try{if(amount<=0){thrownewInvalidAmountException("存款金额必须大于0");}balance+=amount;System.out.println("存款成功!当前余额:"+balance);}finally{lock.unlock();}}//取款publicvoidwithdraw(doubleamount)throwsInsufficientBalanceException,InvalidAmountException{lock.lock();try{if(amount<=0){thrownewInvalidAmountException("取款金额必须大于0");}if(amount>balance){thrownewInsufficientBalanceException("余额不足,当前余额:"+balance);}balance-=amount;System.out.println("取款成功!当前余额:"+balance);}finally{lock.unlock();}}//转账publicvoidtransfer(AccounttoAccount,doubleamount)throwsInsufficientBalanceException,InvalidAmountException{lock.lock();try{if(toAccount==null){thrownewInvalidAmountException("目标账户不能为空");}if(amount<=0){thrownewInvalidAmountException("转账金额必须大于0");}if(amount>balance){thrownewInsufficientBalanceException("余额不足,当前余额:"+balance);}balance-=amount;toAccount.deposit(amount);System.out.println("转账成功!转账金额:"+amount);System.out.println("当前余额:"+balance);}finally{lock.unlock();}}//查询余额publicdoublegetBalance(){lock.lock();try{returnbalance;}finally{lock.unlock();}}//获取账户号publicStringgetAccountNumber(){returnaccountNumber;}//获取账户持有人姓名publicStringgetAccountHolder(){returnaccountHolder;}@OverridepublicStringtoString(){return"Account{"+"accountNumber='"+accountNumber+'\''+",accountHolder='"+accountHolder+'\''+",balance="+balance+'}';}}//银行账户管理系统classBankAccountSystem{privateMap<String,Account>accounts;privateScannerscanner;publicBankAccountSystem(){accounts=newHashMap<>();scanner=newScanner(System.in);}//创建新账户publicvoidcreateAccount(){System.out.println("=====创建新账户=====");System.out.print("请输入账户号:");StringaccountNumber=scanner.nextLine();if(accounts.containsKey(accountNumber)){System.out.println("账户号已存在!");return;}System.out.print("请输入账户持有人姓名:");StringaccountHolder=scanner.nextLine();System.out.print("请输入初始余额:");doubleinitialBalance=scanner.nextDouble();scanner.nextLine();//消耗换行符Accountaccount=newAccount(accountNumber,accountHolder,initialBalance);accounts.put(accountNumber,account);System.out.println("账户创建成功!");}//存款publicvoiddeposit(){System.out.println("=====存款=====");System.out.print("请输入账户号:");StringaccountNumber=scanner.nextLine();Accountaccount=accounts.get(accountNumber);if(account==null){System.out.println("账户不存在!");return;}System.out.print("请输入存款金额:");doubleamount=scanner.nextDouble();scanner.nextLine();//消耗换行符try{account.deposit(amount);}catch(InvalidAmountExceptione){System.out.println("存款失败:"+e.getMessage());}}//取款publicvoidwithdraw(){System.out.println("=====取款=====");System.out.print("请输入账户号:");StringaccountNumber=scanner.nextLine();Accountaccount=accounts.get(accountNumber);if(account==null){System.out.println("账户不存在!");return;}System.out.print("请输入取款金额:");doubleamount=scanner.nextDouble();scanner.nextLine();//消耗换行符try{account.withdraw(amount);}catch(InsufficientBalanceException|InvalidAmountExceptione){System.out.println("取款失败:"+e.getMessage());}}//转账publicvoidtransfer(){System.out.println("=====转账=====");System.out.print("请输入转出账户号:");StringfromAccountNumber=scanner.nextLine();AccountfromAccount=accounts.get(fromAccountNumber);if(fromAccount==null){System.out.println("转出账户不存在!");return;}System.out.print("请输入转入账户号:");StringtoAccountNumber=scanner.nextLine();AccounttoAccount=accounts.get(toAccountNumber);if(toAccount==null){System.out.println("转入账户不存在!");return;}System.out.print("请输入转账金额:");doubleamount=scanner.nextDouble();scanner.nextLine();//消耗换行符try{fromAccount.transfer(toAccount,amount);}catch(InsufficientBalanceException|InvalidAmountExceptione){System.out.println("转账失败:"+e.getMessage());}}//查询账户信息publicvoidqueryAccount(){System.out.println("=====查询账户信息=====");System.out.print("请输入账户号:");StringaccountNumber=scanner.nextLine();Accountaccount=accounts.get(accountNumber);if(account==null){System.out.println("账户不存在!");return;}System.out.println("账户信息:"+account);System.out.println("当前余额:"+account.getBalance());}//显示所有账户publicvoiddisplayAllAccounts(){System.out.println("=====所有账户列表=====");if(accounts.isEmpty()){System.out.println("当前没有账户!");}else{for(Accountaccount:accounts.values()){System.out.println(account);}}}//模拟多线程转账publicvoidsimulateConcurrentTransfers(){System.out.println("=====模拟多线程转账=====");System.out.print("请输入转出账户号:");StringfromAccountNumber=scanner.nextLine();AccountfromAccount=accounts.get(fromAccountNumber);if(fromAccount==null){System.out.println("转出账户不存在!");return;}System.out.print("请输入转入账户号:");StringtoAccountNumber=scanner.nextLine();AccounttoAccount=accounts.get(toAccountNumber);if(toAccount==null){System.out.println("转入账户不存在!");return;}System.out.print("请输入转账次数:");inttransferCount=scanner.nextInt();scanner.nextLine();//消耗换行符System.out.print("请输入每次转账金额:");doubleamount=scanner.nextDouble();scanner.nextLine();//消耗换行符//创建多个线程同时进行转账Thread[]threads=newThread[transferCount];for(inti=0;i<transferCount;i++){threads[i]=newThread(()->{try{fromAccount.tr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学五年级数学《方程的意义》单元核心课创新教学设计(第1课时)
- 初中七年级英语《Days and Months》跨学科主题单元整体教学设计
- 2026荆州早教面试题及答案
- 2026宁夏建行面试题库及答案
- 2026人物关系面试题及答案解析
- 医院进修生管理及规章制度
- 行政性收费纳入预算管理制度
- 甲状腺健康科普手册
- 假期安全警示教育讲解
- 市场配置资源 教学设计
- 2026湖南益阳市安化县事业单位公开招聘工作人员71人笔试模拟试题及答案详解
- 2026水发集团有限公司招聘考试模拟试题及答案详解
- 2026年江苏宿迁经开区城市社区工作者招聘考试试卷-含答案解析
- 高性能材料有限公司年产4.5万吨电子级异丙醇扩建项目环评资料环境影响
- 【MOOC】人工智能原理-北京大学 中国大学慕课MOOC答案
- 克莱德贝尔格曼吹灰器说明书(Jetblower)
- 舒适化精细化口腔治疗
- 2024年江西省高考化学试卷(真题+答案)
- 吸氧操作评分标准
- 《长嘴壶茶艺》课件-第二章:长嘴壶茶艺的基本训练
- 慢性肾脏病并发症
评论
0/150
提交评论