码迷,mamicode.com
首页 > 编程语言 > 详细

《Java程序设计》第一次作业:源代码计算器

时间:2015-05-29 18:19:09      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:

 目的:
(1)一门语言入门,需要编写至少2万行代码。那么,我们编写一个计算代码行数的程序,激励自己前行。
(2)了解代码复用、重构的作用。

目标(递进关系,难度从小到大):
    目标1:给定一个源代码文件(.cs, .java),输出该文件的总行数、空行数、注释行数、代码行数。
    目标2:从命令行输入一个参数(指定目录或文件),输出该目录下指定类型文件(.cs, .java)的个数、每个文件的总行数、空行数、注释行数、代码行数。
    目标3:从命令行输入两个参数(第一个参数:指定目录或文件;第二个参数:指定类型文件),输出该目录下指定类型文件的个数、每个文件的总行数、空行数、注释行数、代码行数。

计分方式(补充-新):
(1)完成 目标1,程序能够运行,并得到结果,计80分;
(2)完成 目标2,程序能够运行,并得到结果,计90分;
(3)完成 目标3,程序能够运行,并得到结果,计100分;
    互评同学,可以根据自己的理解,上下浮动10分。比如 注释很完整、代码很精炼,则加分。完成多个目标,则只计算分值最高的作为本次作业的分数。
 

方法与步骤(参考,以目标1为例):
(1)解读题意:要得到什么结果?脑海中模拟其过程——给定一个文件后,自己数一下总行数、空行数等。
(2)目标分解:大概有哪几个核心步骤?——打开一个文件;读取文件的一行;判断此行的类型;文件结尾的判断;结果输出(输出到屏幕,or 输出到文件)。
(3)代码编写:没有学过写代码(java,or cs),baidu or google搜索。——搜什么呢?怎样提问呢?(C#统计c、c++、C#代码行数)哪些网站的内容可能更值得信赖?(程序员需要知道的N个网站)
(4)调试与测试:我们的代码有错误吗?调试与测试见功底。——测试工程师的工作。如果输入的文件名不存在怎么办?存在但不是指定类型的文件怎么判断?……
(5)总结与提高:有哪些经验与不足?写下来,一方面提醒自己;另一方面,分享到博客中,也帮助其他人。比如:遇到过哪些问题,是怎样解决的?命令行方式好不好,修改成有界面的版本,代码重写的多吗?是否可以尝试一下呢?

 
 
(1)完成 目标1,程序能够运行,并得到结果,计80分;
package iotest;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class StaticsCodeingLine {

	private static int whiteLines = 0;
	private static int commentLines = 0;
	private static int normalLines = 0;
	
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		File f = new File("C:\\Users\\Administrator\\Workspaces\\MyEclipse 8.5\\TYH\\src\\iotest\\StaticsCodeingLine.java");//注意路径 
		sumCode(f);
	}
	
	private static void sumCode(File file) { 
		BufferedReader br = null; 
		boolean comment = false; 
		try { 
			br = new BufferedReader(new FileReader(file)); 
			String line = ""; 
			try { 
				while ((line = br.readLine()) != null) { 
					line = line.trim(); 
					if (line.matches("^[\\s&&[^\\n]]*$")) { 
						whiteLines++; 
					} else if (line.startsWith("/*") && !line.endsWith("*/")) { 
						commentLines++; 
						comment = true; 
					} else if (true == comment) { 
						commentLines++; 
						if (line.endsWith("*/")) { 
							comment = false; 
						} 
					} else if (line.startsWith("//")) { 
							commentLines++; 
					} else { 
						normalLines++; 
					} 
				} 
			} catch (IOException e) { 
					e.printStackTrace(); 
			} 
		} catch (FileNotFoundException e) { 
				e.printStackTrace(); 
		} finally { 
			if (br != null) { 
				try { 
					System.out.println("空行数:"+whiteLines);
					System.out.println("注释行数:"+commentLines);
					System.out.println("代码行数:"+normalLines);
					br.close(); 
					br = null; 
				} catch (IOException e) { 
					e.printStackTrace(); 
				} 
			} 
		} 
	}
}

技术分享

《Java程序设计》第一次作业:源代码计算器

标签:

原文地址:http://blog.csdn.net/u013910357/article/details/46236363

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!