← 回到文章列表

java面试编程题(1)

心浮气躁难做题目啊 静下来总是思路如泉水涌出 题目: 有一个数据文件如下: 1 23 34 17 65 1234 888 -1 .... 9999 数据文件都是十进制整数 但是都是随机无椝律的 并且有可能重复 有可能为负数 每个整数之前以一个或多个空格(…

心浮气躁难做题目啊
静下来总是思路如泉水涌出
题目:
有一个数据文件如下:

1 23 34 17

65 1234 888 -1
….
9999
数据文件都是十进制整数
但是都是随机无椝律的
并且有可能重复
有可能为负数
每个整数之前以一个或多个空格(Space)
制表符(Tab)或者回车换行符(Enter)分隔

请编写程序读取该数据文件中的所有整数
并且其以从大到小的顺序
每行一个整数的格式输出到另一个文件中.

条件:不允许使用StringTokenizer StreamTokernizer类
以及正则表达式regex

本来一道简单题
被条件限定成为了体力题.
My Code:

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;

public class FileFormat {
	public static void main(String[] args) throws IOException {
		FileReader fr = new FileReader("input");
		FileWriter fw = new FileWriter("output");
		ArrayList<integer> list = new ArrayList<integer>();
		boolean flag = false;
		char[] arr = new char[1024];
		int[] arr2 = new int[0];
		fr.read(arr);
		for (int n = 0; n < arr.length; n++) {
			if (arr[n] >= '0' && arr[n] <= '9') {
				arr2 = Arrays.copyOf(arr2, arr2.length + 1);
				arr2[arr2.length - 1] = arr[n] - '0';
				flag = true;
			} else if (arr[n] == '-') {
				arr2 = Arrays.copyOf(arr2, arr2.length + 1);
				arr2[arr2.length - 1] = arr[n];
			} else {
				if (flag) {
					list.add(toInt(arr2));
					arr2 = new int[0];
				}
				flag = false;
			}
		}
		Collections.sort(list);
		Collections.reverse(list);

		for(int i=0;i<list.size();i++){
			fw.write(String.valueOf(list.get(i))+"n");
		}

		fw.close();
		fr.close();

		System.out.println("System Complete");
	}

	public static int toInt(int[] arr) {
		int sum = 0;
		boolean z = true;

		if (arr[0] == '-') {
			for (int i = 1; i < arr.length; i++) {
				sum = sum * 10 + arr[i];
				z = false;
			}
		} else {
			for (int i = 0; i < arr.length; i++) {
				sum = sum * 10 + arr[i];
			}
		}

		if (z)
			return sum;
		else
			return sum * (-1);
	}
}

在这里找找

输入关键词,找一篇过去的记录。