美文网首页
程序员思维于编程方式

程序员思维于编程方式

作者: 我迎风踏雪而来 | 来源:发表于2018-11-14 19:12 被阅读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来完成没有找到的情况。

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

    相关文章

      网友评论

          本文标题:程序员思维于编程方式

          本文链接:https://www.haomeiwen.com/subject/rkvgixtx.html