} }
26.有一个n*m的矩阵,编写程序,找出其中最大的那个元素所在的行和列,并输出其值及行号和列号。class Ex7_26
{ public static void main(String[] args) { int n = 5; int m = 6; int [][] a = new int[n][m]; for( int i=0; i 第8章 Java的多线程 1.程序中怎样创建线程? 答:创建线程对象有两种方法,一是通过继承Thread类,一是向Thread类传递一个Runnable对象。 2.程序中怎样控制线程? 答:启动一个线程:调用start()方法。 终止或暂停一个线程:一般采取给线程设定一个标记变量的方法,来决定线程是否应该终止或暂停。 设定线程的优先级:使用Thread对象的setPriority( int priority)方法。 3.多线程之间怎样进行同步? 答:可以通过使用关键字synchronized,使用对象的wait()、notify()方法来实现线程间的同步。 4.编写一个程序,用一个线程显示时间,一个线程用来计算(如判断一个大数是否是质数),当质数计算完毕后,停止时间的显示。 答:见程序。import java.math.BigInteger; import java.util.Random; public class Ex8_4 { public static void main(String args[]) { new Ex8_4().test(); } public void test() { MyTask mytask = new MyTask(); Thread thread = new Thread(mytask); thread.start(); new Thread( new Clock() ).start(); } boolean finished = false; class MyTask implements Runnable { public void run() { for( int i=0; i<10; i++ ){ doOnce(); Thread.yield(); } finished = true; } public void doOnce() { Random rnd = new Random(); BigInteger prime =BigInteger.probablePrime(800,rnd); System.out.println(\随机数是:\ boolean bo=prime.isProbablePrime( 10000 ); //验证 System.out.println(bo?\很可能是质数\不是质数\ } } class Clock implements Runnable { public void run() { System.out.println(\ while( ! finished ){ System.out.print( \ try{ Thread.sleep(1000); } catch( InterruptedException e ){} Thread.yield(); } } } } 第9章 流、文件及基于文本的应用 1.字节流与字符流有什么差别? 答:按处理数据的类型,流可以分为字节流与字符流,它们处理的信息的基本单位分别是字节(byte)与字符(char)。 2.节点流与处理流有什么差别? 答:节点流(Node Stream): 直接与特定的地方(如磁盘、内存、设备等)相连,可以从/向一个特定的地(节点)读写数据。如文件流FileReader。 处理流(Processing Stream): 是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读/写功能。处理流又称为过滤流。如缓冲处理流BufferedReader。 3.输入流与输出流各有什么方法? 答:输入流InputStream类最重要的方法是读数据的read()方法。read()方法功能是逐字节地二进制的原始方式读入数据。另外,它还有skip(long n)、reset()、available()、close()方法等。 输出流OutputStream类的重要方法是write(),它的功能是将字节写入流中。另外,它还有flush()及close()方法。 4.怎样进行文件及目录的管理? 答:Java支持文件管理和目录管理,它们都是由专门的java.io.File类来实现。每个File类的对象表示一个磁盘文件或目录,其对象属性中包含了文件或目录的相 关信息,如名称、长度、所含文件个数等,调用它的方法则可以完成对文件或目录的常用管 理操作,如创建、删除等。 5.编写一个程序,从命令上行接收两个实数,计算其乘积。 答:参见程序。import java.io.*; public class Ex9_5 { public static void main(String[] args) { String s = \ double c = 0; double d = 0; try{ BufferedReader in = new BufferedReader( new InputStreamReader( System.in ) ); System.out.print(\请输入一个数: \ s = in.readLine(); c = Double.parseDouble( s ); System.out.print(\请输入另一个数: \ s = in.readLine(); d = Double.parseDouble( s ); System.out.println(\这两个数的积为: \ }catch(IOException e){} } } 6.编写一个程序,从命令行上接收两个文件名,比较两个文件的长度及内容。 答:参见程序。import java.io.*; public class Ex9_6 { public static void main(String[] args) { try{ BufferedReader in = new BufferedReader( new InputStreamReader( System.in ) ); System.out.print(\请输入一个文件名: \ String name1 = in.readLine(); System.out.print(\请输入另一个文件名: \ String name2 = in.readLine(); File file1 = new File( name1 ); File file2 = new File( name2 ); long len1 = file1.length(); long len2 = file2.length(); if( len1 != len2 ){ System.out.println( \这两个文件的长度不一样\ return; } String text1 = readFileToEnd( file1 ); String text2 = readFileToEnd( file2 ); System.out.println( text1 ); System.out.println( text2 ); if( text1.equals(text2) ){ System.out.println( \这两个文件的内容相同\ }else{ System.out.println( \这两个文件的内容不一样\ } }catch(IOException e){ e.printStackTrace(); } } public static String readFileToEnd( File file ){ StringBuffer text = new StringBuffer(); try { BufferedReader in = new BufferedReader( new FileReader(file)); String s = in.readLine(); while ( s != null ) { text.append( s + \ s = in.readLine(); } in.close(); } catch (IOException e2) { e2.printStackTrace(); } return text.toString(); } } 7.编写一个程序,能将一个Java源程序中的空行及注释去掉。 答:参见程序。import java.io.*; public class Ex9_7 { public static void main (String[] args) { String infname = \ String outfname = \ if( args.length >= 1 ) infname = args[0]; if( args.length >= 2 ) outfname = args[1]; try { File fin = new File(infname); File fout = new File(outfname); BufferedReader in = new BufferedReader(new FileReader(fin)); PrintWriter out = new PrintWriter(new FileWriter(fout)); int cnt = 0; // 行号 String s = in.readLine(); while ( s != null ) { cnt ++; s = deleteComments(s); //去掉以//开始的注释 if( s.length() != 0 ){ out.println( s ); //写出非空行 } s = in.readLine(); //读入 } in.close(); // 关闭缓冲读入流及文件读入流的连接. out.close();