• 欢迎访问梯云博客,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站点击访问
  • 站点的评论回复邮件可能会被邮箱放入垃圾邮件中,请注意哦~
  • 大树 2019 年准备考研,所以网站内容的更新可能会需要等到考完研了.... 也祝各位研友考研顺利!!
  • 梯云博客近期增设了“电影资源”板块,在视频区域下边哦~
  • 如果百度网盘下载速度过慢,可使用该工具~Proxyee-down 百度网盘不限速
  • 本站所有发布的信息以及产品,仅供学习研究使用;除有软件所有者授权外不得非法用于商业或其他用途。
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏梯云吧!

程序员的思想和程序的强联系性

一杯JAVA浓 做棵大树 2年前 (2017-05-18) 566次浏览 1个评论

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

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

 对象流的使用

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

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

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

 

我拿到题目,便想着先用while进行循环,得到数据文件中的对象的数量,同时再用一次while,其中使用equal函数来进行比对,然而呢,我发现,while读取对象的话,会产生EOFException,而第一次while产生异常后,第二个while就不会再运行了。于是,我和同学商量,他们说,他们也出现了这样的问题。这个时候呢,我想到一种方法,把第二个whilefor代替,并且将它挪移到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 来完成没有找到的情况。

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

 

 


TeenShare 梯云博客 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明程序员的思想和程序的强联系性
喜欢 (2)
[欢迎投币]
分享 (0)
关于作者:
一个整天无所事事的,有时候忽然热血的孩子
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(1)个小伙伴在吐槽
  1. 签到成功!签到时间:2017-05-20 14:15:35,每日打卡,生活更精彩哦~
    做棵大树2017-05-20 14:15 回复 未知操作系统 | 未知浏览器