现在的位置: 首页 > 编程技术 > Java > 编程技术 > 算法学习 > 正文

数据结构与算法分析_Java语言描述课后题1.4、1.5

2015年05月09日 Java, 算法学习 ⁄ 共 1444字 ⁄ 字号 数据结构与算法分析_Java语言描述课后题1.4、1.5已关闭评论 ⁄ 阅读 863 次

数据结构与算法分析_Java语言描述课后题1.4、1.5这本书是有课后答案的,不过不全,而且也不是代码。自己做了之后觉得有点意思的放上来,不保证完全正确,仅供参考。

1.4

package chapter1;

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

public class Q4 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		readFileByLines("C:/test1.txt");
	}

	/**
	 * 以行为单位读取文件,常用于读面向行的格式化文件
	 */
	public static void readFileByLines(String fileName) {
		File file = new File(fileName);
		BufferedReader reader = null;
		try {
			System.out.println("以行为单位读取文件内容,一次读一整行:");
			reader = new BufferedReader(new FileReader(file));
			String tempString = null;
			int line = 1;
			// 一次读入一行,直到读入null为文件结束
			while ((tempString = reader.readLine()) != null) {
				// 显示行号
				String tString = tempString.trim();
				if (tString.startsWith("#include ")) {
					String temp = tString.substring(9, tString.length()).trim();
					String newfileString = temp.substring(0, temp.length());
					if (newfileString.equals(fileName)) {
						System.out.println("自己不能读取自己!");
						continue;
						// return;
					} else {
						readFileByLines(newfileString);
					}
				} else {
					System.out.println("line " + line + ": " + tempString);
					line++;
				}
			}
			reader.close();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (reader != null) {
				try {
					reader.close();
				} catch (IOException e1) {
					e1.printStackTrace();
				}
			}
		}
	}
}

1.5

package chapter1;

public class Q5 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println(String.valueOf(oneSum(985)));

	}

	static int oneSum(int a) {
		if (a == 0) {
			return 0;
		} else if (a == 1) {
			return 1;
		} else if (a < 0) {
			return -1;
		} else if (a % 2 == 1) {
			return oneSum(a / 2) + 1;
		} else {
			return oneSum(a / 2);
		}

	}
}

抱歉!评论已关闭.