笔试题【二维矩阵操作,文件存取】

给定二维整形数组int[][]

1.将其用矩阵的形式输出

2.设计方法,将上矩阵的一圈提取出来,并存储到新的数组db[20]中,该方法返回一圈数字的数目

3.存储上述数组db[20],并做读取测试。

  1 import java.io.FileInputStream;
  2 import java.io.FileOutputStream;
  3 import java.io.IOException;
  4 import java.io.ObjectInputStream;
  5 import java.io.ObjectOutputStream;
  6 import java.io.Serializable;
  7 
  8 
  9 public class Test implements Serializable{
 10     //给定的数组
 11     int[][] mb={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16},{17,18,19,20}};
 12     //用于存储一圈数字的数组
 13     int[][] db=new int[16][1];
 14     
 15     public static void main(String[] args) {
 16         // TODO Auto-generated method stub
 17         Test test=new Test();
 18         test.print(test.mb, 1);
 19         
 20         //提取一圈数字并现实
 21         test.MoveWall(test.mb);
 22         test.print(test.db, 2);
 23         
 24         //存储文件
 25         test.savefile2ser(test);
 26         
 27         //将db[]清空并显示,用于下一步测试文件确实读取成功
 28         test.db=new int[16][1];
 29         test.print(test.db, 2);
 30         
 31         //读取文件并现实
 32         test=new Test().readfilefser();
 33         test.print(test.db, 2);
 34         
 35     }
 36     
 37     //获取一圈数字,存储到db[],且返回数字的个数
 38     public int MoveWall(int[][] a){
 39         int temp = 0;
 40         for (int i = 0; i < a[a.length-1].length; i++) {
 41             db[temp][0]=a[0][i];
 42             temp++;
 43         }
 44         temp--;
 45         for (int i = 0; i < a.length; i++) {
 46             db[temp][0]=a[i][a[a.length-1].length-1];
 47             temp++;
 48         }
 49         temp--;
 50         for (int i = a[a.length-1].length-1; i >=0; i--) {
 51             db[temp][0]=a[a.length-1][i];
 52             temp++;
 53         }
 54         temp--;
 55         for (int i = a[a.length-1].length-1; i > 0; i--) {
 56             db[temp][0]=a[i][0];
 57             temp++;
 58         }
 59         return temp;
 60         
 61     }
 62     //用于显示矩阵及db[] o=1显示矩阵,o=2显示db[]
 63     public void print(int[][] temp,int o){
 64         if (o==1) {
 65             for (int i = 0; i < temp.length; i++) {
 66                 for (int j = 0; j < temp[i].length; j++) {
 67                     System.out.print(temp[i][j]+" ");
 68                 }
 69                 System.out.println();
 70             }
 71         }else if (o==2) {
 72             for (int i = 0; i < temp.length; i++) {
 73                 for (int j = 0; j < temp[i].length; j++) {
 74                     System.out.print(temp[i][j]+" ");
 75                 }
 76             }
 77             System.out.println();        
 78         }else {
 79             System.out.println("wrong parameter o");
 80         }
 81     }
 82     
 83     //save file to File.ser
 84     public void savefile2ser(Test test) {
 85         try {
 86             FileOutputStream file=new FileOutputStream("File.ser");
 87             ObjectOutputStream o=new ObjectOutputStream(file);
 88             o.writeObject(test);
 89             o.close();
 90             
 91         } catch (IOException e) {
 92             // TODO Auto-generated catch block
 93             e.printStackTrace();
 94         }
 95     }
 96     //read file from File.ser
 97     public Test readfilefser(){
 98         try {
 99             FileInputStream file=new FileInputStream("File.ser");
100             ObjectInputStream o=new ObjectInputStream(file);
101             Test test=(Test) o.readObject();
102             o.close();
103             return test;
104         } catch (Exception e) {
105             // TODO Auto-generated catch block
106             e.printStackTrace();
107         }
108         return null;
109     }
110 }

 

 

 

posted @ 2013-11-29 17:31  sdrzlyz  阅读(285)  评论(0编辑  收藏  举报