// Fig. 14.14: CreditInquiry.java
// This program reads a file sequentially and displays the
// contents based on the type of account the user requests
// (credit balance, debit balance or zero balance).
import java.io.File;
import java.io.FileNotFoundException;
import java.lang.IllegalStateException;
import java.util.NoSuchElementException;
import java.util.Scanner;
import com.deitel.jhtp7.ch14.AccountRecord;
public class CreditInquiry
{
private MenuOption accountType;
private Scanner input;
private MenuOption choices[] = { MenuOption.ZERO_BALANCE,
MenuOption.CREDIT_BALANCE, MenuOption.DEBIT_BALANCE,
MenuOption.END };
// read records from file and display only records of appropriate type
private void readRecords()
{
// object to be written to file
AccountRecord record = new AccountRecord();
try // read records
{
// open file to read from beginning
input = new Scanner( new File( "clients.txt" ) );
while ( input.hasNext() ) // input the values from the file
{
record.setAccount( input.nextInt() ); // read account number
record.setFirstName( input.next() ); // read first name
record.setLastName( input.next() ); // read last name
record.setBalance( input.nextDouble() ); // read balance
// if proper acount type, display record
if ( shouldDisplay( record.getBalance() ) )
System.out.printf( "%-10d%-12s%-12s%10.2f\n",
record.getAccount(), record.getFirstName(),
record.getLastName(), record.getBalance() );
} // end while
} // end try
catch ( NoSuchElementException elementException )
{
System.err.println( "File improperly formed." );
input.close();
System.exit( 1 );
} // end catch
catch ( IllegalStateException stateException )
{
System.err.println( "Error reading from file." );
System.exit( 1 );
} // end catch
catch ( FileNotFoundException fileNotFoundException )
{
System.err.println( "File cannot be found." );
System.exit( 1 );
} // end catch
finally
{
if ( input != null )
input.close(); // close the Scanner and the file
} // end finally
} // end method readRecords
// use record type to determine if record should be displayed
private boolean shouldDisplay( double balance )
{
if ( ( accountType == MenuOption.CREDIT_BALANCE )
&& ( balance < 0 ) )
return true;
else if ( ( accountType == MenuOption.DEBIT_BALANCE )
&& ( balance > 0 ) )
return true;
else if ( ( accountType == MenuOption.ZERO_BALANCE )
&& ( balance == 0 ) )
return true;
return false;
} // end method shouldDisplay
// obtain request from user
private MenuOption getRequest()
{
Scanner textIn = new Scanner( System.in );
int request = 1;
// display request options
System.out.printf( "\n%s\n%s\n%s\n%s\n%s\n",
"Enter request", " 1 - List accounts with zero balances",
" 2 - List accounts with credit balances",
" 3 - List accounts with debit balances", " 4 - End of run" );
try // attempt to input menu choice
{
do // input user request
{
System.out.print( "\n? " );
request = textIn.nextInt();
} while ( ( request < 1 ) || ( request > 4 ) );
} // end try
catch ( NoSuchElementException elementException )
{
System.err.println( "Invalid input." );
System.exit( 1 );
} // end catch
return choices[ request - 1 ]; // return enum value for option
} // end method getRequest
public void processRequests()
{
// get user's request (e.g., zero, credit or debit balance)
accountType = getRequest();
while ( accountType != MenuOption.END )
{
switch ( accountType )
{
case ZERO_BALANCE:
System.out.println( "\nAccounts with zero balances:\n" );
break;
case CREDIT_BALANCE:
System.out.println( "\nAccounts with credit balances:\n" );
break;
case DEBIT_BALANCE:
System.out.println( "\nAccounts with debit balances:\n" );
break;
} // end switch
readRecords();
accountType = getRequest();
} // end while
} // end method processRequests
} // end class CreditInquiry
/*************************************************************************
* (C) Copyright 1992-2007 by Deitel & Associates, Inc. and *
* Pearson Education, Inc. All Rights Reserved. *
* *
* DISCLAIMER: The authors and publisher of this book have used their *
* best efforts in preparing the book. These efforts include the *
* development, research, and testing of the theories and programs *
* to determine their effectiveness. The authors and publisher make *
* no warranty of any kind, expressed or implied, with regard to these *
* programs or to the documentation contained in these books. The authors *
* and publisher shall not be liable in any event for incidental or *
* consequential damages in connection with, or arising out of, the *
* furnishing, performance, or use of these programs. *
*************************************************************************/
java大学程序设计和java大学基础教程的例子---缺的---ch14
需积分: 0 136 浏览量
更新于2009-02-07
收藏 40KB ZIP 举报
Java大学程序设计与Java大学基础教程是初学者深入理解Java编程语言的重要资源。"ch14"这个章节可能涵盖了许多关键概念,虽然由于文件大小限制,我们无法获取完整的内容,但我们可以根据通常在大学教程中第14章可能出现的主题来讨论相关知识点。
1. **异常处理**:Java中的异常处理是一个重要的话题,通常在高级部分讲解。第14章可能会详细介绍`try-catch-finally`块、自定义异常以及如何有效地使用`throws`关键字来处理程序运行时可能出现的问题。
2. **多线程**:Java是多线程编程的强大平台,第14章可能深入讲解线程的创建(通过`Thread`类或实现`Runnable`接口)、线程同步(`synchronized`关键字、`wait()`, `notify()`, `notifyAll()`方法)、线程池(`ExecutorService`和`ThreadPoolExecutor`)以及并发工具类如`Semaphore`, `CountDownLatch`, `CyclicBarrier`等。
3. **网络编程**:Java提供丰富的API用于网络编程,如`Socket`和`ServerSocket`类。这部分可能会介绍如何建立客户端-服务器通信,发送和接收数据,以及处理TCP和UDP协议。
4. **I/O流**:Java I/O系统是处理输入和输出的关键部分,包括文件操作、对象序列化和反序列化。这一章可能涵盖`InputStream`和`OutputStream`家族,以及更高级的`BufferedReader`, `BufferedWriter`, `FileReader`, `FileWriter`等。
5. **集合框架的深入研究**:Java集合框架包括`List`, `Set`, `Map`接口及其实现,如`ArrayList`, `LinkedList`, `HashSet`, `TreeSet`, `HashMap`, `TreeMap`等。第14章可能探讨它们的特点、用途和性能比较,以及高级特性如泛型、迭代器和`Collections`类的方法。
6. **反射和注解**:Java的反射API允许程序在运行时检查和操作类、接口、字段和方法。注解是元数据的一种形式,用于提供编译时和运行时的信息。这一章可能解释如何使用`Class`类,以及`@Override`, `@Deprecated`, `@ SuppressWarnings`等常见注解。
7. **枚举和内部类**:枚举是Java中一种特殊的类,用于定义固定的值集合。内部类(包括匿名内部类、局部内部类和静态嵌套类)为创建复杂设计提供了灵活性。第14章可能涵盖它们的用法和优势。
8. **垃圾回收和内存管理**:Java的自动内存管理是其魅力之一,但理解如何避免内存泄漏和优化内存使用也很重要。这部分可能涉及对象生命周期、引用类型(强引用、软引用、弱引用、虚引用)以及如何分析和调整JVM堆内存。
9. **设计模式**:设计模式是软件开发中的最佳实践,第14章可能介绍一些常见的设计模式,如单例、工厂、观察者、装饰者、适配器等,并讲解如何在Java中应用它们。
10. **JavaFX或Swing图形用户界面**:如果教程覆盖GUI编程,这部分会介绍如何使用JavaFX或Swing构建桌面应用程序,包括组件、布局管理和事件处理。
尽管我们无法获取具体的"ch14"内容,但上述是基于常见大学教程结构推测的一些核心主题。深入学习这些概念对于掌握Java编程至关重要。如果你对特定主题有疑问,可以进一步探索相关的书籍、在线教程或官方文档以获得更多信息。
LIQINGLIN
- 粉丝: 177
- 资源: 17
最新资源
- (2025)网络安全建设与网络社会治考试题库(附答案).doc
- (2025)网络安全法考试试题库及答案.docx
- (2025)网络安全建设与网络社会治考试题库及答案.doc
- (2025)网络安全建设与网络社会治理考试题(含答案).docx
- (2025)网络安全建设与网络社会治理考试题库及答案.docx
- (2025)网络安全建设与网络社会治理考试题及答案.doc
- (2025)网络安全知识竞赛必刷题库及答案.docx
- (2025)网络安全建设与网络社会治理题库及答案.doc
- (2025)网络安全知识竞赛题题库及答案.docx
- (2025)物联网基础知识试题及答案.docx
- (2025)物流学基础知识考试题库(含答案).doc
- (2025)乡村医生考试题库及答案.doc
- (2025)消防培训题库及答案.docx
- (2025)小学语文必考知识点大全.docx
- (2025)心理学知识竞赛题库及答案.docx
- "基于COMSOL 6.2版本的锂离子电池三维电化学模型与三维热模型耦合分析及其4C充放电热仿真研究",comsol锂电池三维电化学模型耦合三维热模型4C充放电热仿真 (COMSOL6.2版本)