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

目的:

(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();
				}
			}
		}
	}
}

时间: 2024-08-18 22:09:33

《Java程序设计》第一次作业:源代码计算器的相关文章

week10《java程序设计》作业总结

week10<java程序设计>作业总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 答:: 2. 书面作业 本次PTA作业题集异常 1. 常用异常 结合题集题目7-1回答 1.1 自己以前编写的代码中经常出现什么异常.需要捕获吗(为什么)?应如何避免? 答: 经常出现的异常有: 输入类型不符NumberFormatException,数组越界ArrayIndexOutOfBoundsException,空指针NullPointerException ,

C语言程序设计第一次作业

同学们,我们已经留了两次实验了,请大家将这两次的实验课内容写成实验报告在截止日期前进行提交. 截止日期:2016-10-7 23:00 实验一: 编程打印5行的倒三角形,第一行打印9个*,第二行7个*,--第5行打印1个* 2. 输入3个整数并且计算他们的和, 输入格式:   1  2  3 输出格式:   1+2+3=6 按照下列格式要求输入输出数据 输出:请输入今天的日期,年月日用逗号分开 输入:2016,9,13 输出:请输入你的生日,格式:年-月-日 输入:1998-5-6 输出:你今年

《JAVA》 第一次作业

一.<学习总结> 1.Scanner类实现基本数据输入 在java中通过Scanner类完成控制台的输入,查阅JDK帮助文档,Scanner类实现基本数据输入的方法是什么?不能只用文字描述,一定要写代码,通过具体实例加以说明. 代码如下 java Scanner in = new Scanner(System.in); int i = in.nextInt(); 输入的数据保存在变量in中,Scanner对于输入的数据类型没有限制,但如果想要对这些数据进行输出就要对以储存的数据进行转换后才能输

Java程序设计上机作业1

编写一个Java程序,计算半径为3.0的圆周长和面积并输出结果. 注:系统类Math位于java.lang包中,圆周率π可以由Math类的静态属性PI得到,其定义为“public static final double PI = 3.14159265358979323846;”. import java.lang.*; public class Yuan { public static void main(String[] args) { double r = 3.0; double perim

面向对象程序设计 ——第一次作业

大一下学期的自我目标 大一上学期的总结:对大学生活的适应程度还有所不足,希望大一下学期在学习和生活两个方面都可以有所进步,c语言课程因为种种原因落下了不少,但还好也都渐渐补回来了.希望下学期不要再出现这样的问题啦~ 对面向对象课程完成后学习到的能力的预期:能够熟练c++语言的操作和应用 对面向对象课程的期望:除了技术外能多交几个大神就好了. 对编程和专业能力的愿景规划:能够用java熟练编程,成为一个程序员,Java是最好的语言!

JAVA《第一次作业》

(一)学习总结: 1.在java中通过Scanner类完成控制台的输入,查阅JDK帮助文档,Scanner类实现基本数据输入的方法是什么?不能只用文字描述,一定要写代码,通过具体实例加以说明. package study; import java.util.Scanner; public class Study { public static void main(String[] args) { // TODO Auto-generated method stub int x; Scanner

JAVA课程第一次作业

3.1打印出1~10000中的所有水仙花数: 程序代码: public class shuixian { public static void main(String[] args) { for(int i=1;i<=10000;i++) { int ge,shi,bai; bai=i/100; shi=(i-baiWei*100)/10; ge=i-bai*100-shi*10; if(i==ge*ge*ge+shi*shi*shi+bai*bai*bai) { System.out.prin

java程序设计国庆作业

public class X{ public static void main(String[] args){ //第一题 System.out.println("5+5="+5+5); //第二题 int a=3,b; b=a++; System.out.println("a="+a+",b="+b); //第三题 short s=3; s=(short)(s+4);//不兼容的类型: 从int转换到short可能会有损失.+short Sys

程序设计第一次作业

原文地址:https://www.cnblogs.com/wuyijie/p/8570542.html

Week09《java程序设计》第九次作业总结

Week09<java程序设计>第九次作业总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 答: 2. 书面作业 本次作业题集集合 1. List中指定元素的删除(题集题目) 1.1 实验总结.并回答:列举至少2种在List中删除元素的方法. 答: 实验总结:在public static List 删除元素的方法: 1. 从list的后面开始删除 for (int i =list.size()-1 ; i >-1; i--) { if(lis