首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

各位大侠们,能不能帮小弟我看一上这道题如何做,俺是新手

2012-12-28 
各位大侠们,能不能帮我看一下这道题怎么做,俺是新手各位大侠们,能不能帮我看一下这道题怎么做,俺是新手题:

各位大侠们,能不能帮我看一下这道题怎么做,俺是新手
各位大侠们,能不能帮我看一下这道题怎么做,俺是新手
题:
Java编程size]
有一个文本文件"c.txt"有多行内容,各行首部都包含一个行号和冒号,请按行号对各行进行排序,并在尾部写入冒号和本行字符数,然后保存在另一个文本文件"d.txt"之中。
 比如:文件"c.txt"内容格式如下:
2: 教育部高校科研管理方法研讨会暨青委会西北片区成立大会在西安举行
4: 第14届亚洲地区英语语言测试研讨会在西安举行 
3: 法国巴黎南十一大学代表团访问西安
1: 西安召开创先争优活动总结大会
 

[最优解释]


package com.pyh.demo1;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

/**
 * 有一个文本文件"c.txt"有多行内容
 * 
 * 各行首部都包含一个行号和冒号
 * 
 * 请按行号对各行进行排序
 * 
 * 并在尾部写入冒号和本行字符数
 * 
 * 然后保存在另一个文本文件"d.txt"之中。
 */
public class Demo1 {
/**
 * 此方法是输入一个文件的路径,返回一个集合,集合里的每个元素就是文件中的每行内容
 */
public static List<Info> getInfo(String fileName) {
File file = new File(fileName);
if (file == null 
[其他解释]
还是不行呀,对了,用的是JDK在DOS下运行的,不知道有影响没?
[其他解释]
 file.length() < 1) {// 如果文件为空或没有内容,则返回null
return null;
}
List<Info> infos = new ArrayList<Info>();// 定义一个集合
Scanner scan = null;// 准备输入
try {
scan = new Scanner(file);
scan.useDelimiter("\r\n");// 设置一个分隔符
} catch (FileNotFoundException e) {
e.printStackTrace();
}
String temp = null;
String[] arr = new String[2];
Info info = null;
while (scan.hasNext()) {// 循环读取内容
temp = scan.next();
arr = temp.split(":");// 将读取到的内容按“:”进行分割
info = new Info();// 实例化一个Info类,用于接收内容
info.setId(Integer.parseInt(arr[0]));// 设置编号
info.setInfo(arr[1]);// 设置内容
info.setCount(arr[1].length());// 设置内容的字符数,这里只是设置了内容的字符数,并不是本行的字符数
infos.add(info);// 增加到集合中
}
scan.close();// 关闭
return infos;
}

/**
 * 给定一个集合和文件路径,此方法将集合里的内容写入到文件中
 */
public static void writeInfo(List<Info> infos, String fileName) {
PrintWriter out = null;// 准备输入
try {
out = new PrintWriter(fileName);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
for (Info info : infos) {// 循环将内容写入到文件中
out.println(info.getId() + ":" + info.getInfo() + ":"
+ info.getCount());
}
out.close();// 关闭
}

public static void main(String[] args) {
String fileName = "./a.txt";
List<Info> infos = getInfo(fileName);// 读取内容
Collections.sort(infos);// 对集合进行排序
writeInfo(infos, "./b.txt");// 将集合里的内容写入文件
}
}

/**
 * 一个临时类,主要用于记录编号,内容,字符数
 * 
 * 实现Comparable接口是为了作排序比较的
 */
class Info implements Comparable<Info> {
private int id;// 编号


private String info;// 内容
private int count;// 字符数

public Info() {
}

public Info(int id, String info) {
this.id = id;
this.info = info;
}

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getInfo() {
return info;
}

public void setInfo(String info) {
this.info = info;
}

public int getCount() {
return count;
}

public void setCount(int count) {
this.count = count;
}

/**
 * 覆写此方法,定义了排序比较的规则
 */
public int compareTo(Info info) {
return this.getId() - info.getId();
}

}




[其他解释]

运行时老出现这,请您帮我看一下
[其他解释]
找到这两句,改成这样吧:

scan.close();// 关闭

改:

if (scan != null) {
scan.close();// 关闭
}



out.close();// 关闭

改:

if (out != null) {
out.close();// 关闭
}


我用MyEclipse测试过没有问题的,不知道你的是什么环境
[其他解释]
这是没找到文件吧,你把c.txt放哪的
[其他解释]
我在D盘放着,那应该放哪?
[其他解释]
你把
 String fileName = "./a.txt";
改成
 String fileName = "d:/a.txt";

试试
[其他解释]

又出现此情况,麻烦您再看一下吧
[其他解释]
我基础有点差,我再看看书吧,还是要谢谢你们
[其他解释]
引用:
又出现此情况,麻烦您再看一下吧


你的原文件一定要是这种格式:
2: 教育部高校科研管理方法研讨会暨青委会西北片区成立大会在西安举行
4: 第14届亚洲地区英语语言测试研讨会在西安举行 
3: 法国巴黎南十一大学代表团访问西安
1: 西安召开创先争优活动总结大会

注意前面的编号不能有空格,编号后面的“:”一定要是英文(半角)的,不然就会报错了。
[其他解释]
引用:
又出现此情况,麻烦您再看一下吧

我估计是你的a.txt里面有空行吧
你把文件打开把最下面几行空的删掉试试
就是说,可能你的光标在箭头这个位置上

2: 教育部高校科研管理方法研讨会暨青委会西北片区成立大会在西安举行
 4: 第14届亚洲地区英语语言测试研讨会在西安举行 
 3: 法国巴黎南十一大学代表团访问西安
 1: 西安召开创先争优活动总结大会
<--

往前删除几格

2: 教育部高校科研管理方法研讨会暨青委会西北片区成立大会在西安举行
 4: 第14届亚洲地区英语语言测试研讨会在西安举行 
 3: 法国巴黎南十一大学代表团访问西安
 1: 西安召开创先争优活动总结大会<--

改成这样

或者在代码
temp = scan.next();
后面加一句
if(temp.indexOf(':') < 0)
continue;

热点排行