程序员思维于编程方式

2018-11-14  本文已影响0人  我迎风踏雪而来

完成同一个目的,不同的程序员绝对有不同的程序。多少个程序员就有多少种思路,真的,决定程序实用性的,就是一个程序员的思维。

举例来说吧,最近JAVA老师给我们布置了一个这样的题目,让我们完成。

对象流的使用

已知一个文件student.db中存储了几个Student类的对象,请编写一个程序,用户可以输入一个学生的姓名,然后在该文件中查找是否存在该学生的基本信息,如果不存在输出“姓名为**的学生信息不存在”,如果存在则输出该学生的基本信息。

注:[1] Student.java(注意该文件一定要放到缺省包中)和student.db在学院”ftp189/程序设计Java”服务器上下载。

[2]已知该文件中存储的学生的姓名有张华、王小、李峰、赵涛等,请检验程序的运行结果。

我拿到题目,便想着先用while进行循环,得到数据文件中的对象的数量,同时再用一次while,其中使用equal函数来进行比对,然而呢,我发现,while读取对象的话,会产生EOFException,而第一次while产生异常后,第二个while就不会再运行了。于是,我和同学商量,他们说,他们也出现了这样的问题。这个时候呢,我想到一种方法,把第二个while用for代替,并且将它挪移到catch块中,这样就保证它的执行了。

这种方法确实可以执行,可效率和层次感一下子就降低了。下面我就来说一下老师的方法。

import java.io.EOFException;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.io.ObjectInputStream;

import java.util.Scanner;

import javax.swing.JOptionPane;

public class TestStudent {

public static void main(String[] args) {

// Scanner in = new Scanner(System.in);

// String name = in.nextLine();

  String name=JOptionPane.showInputDialog("请输入姓名:");

  Student student = null;

  File file = new File("db/student.db");

  try {

  FileInputStream fileInputStream = new FileInputStream(file);

  ObjectInputStream objectinputStream = new ObjectInputStream(fileInputStream);

 

  while ((student = (Student) objectinputStream.readObject()) != null) {

    if (name.equals(student.getName())) {

    JOptionPane.showMessageDialog(null, student.toString());

    break;

    }

  }

  fileInputStream.close();

  objectinputStream.close();

 

  } catch (FileNotFoundException e) {

  // TODO 自动生成的 catch 块

  e.printStackTrace();

  } catch (EOFException e) {

 

  System.out.println("没有找到这个学生!");

  } catch (IOException e) {

  // TODO 自动生成的 catch 块

  e.printStackTrace();

  } catch (ClassNotFoundException e) {

  // TODO 自动生成的 catch 块

  e.printStackTrace();

  }

 

}

}

这个程序呢,就很高效的完成了程序,它用了一个while,而在while中进行比较,则提高了它的简洁度和速率。同时呢,又运用了catch来完成没有找到的情况。

可以说是思路使程序一下子简便了好多,可见,一个程序的效率和程序员的思维相关多密切。

上一篇下一篇

猜你喜欢

热点阅读