如何编此程序 java
发布网友
发布时间:2022-05-31 11:01
我来回答
共3个回答
热心网友
时间:2023-10-13 17:24
看明白了,按照A word is defined
as a maximal sequence of consecutive characters that are not white spaces. The static function
boolean Character.isWhitespace(char) returns true if the input character is a white space.
这两句话来说呢,实际上是使用了比较复杂的自定义方法,而抛弃了java一些现有的方法。
package file;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class FileContentsCheck {
public static String fileStatistics(String fileName) throws IOException {
// 行的总长度
int totalLineLength = 0;
// 行数
int lineCount = 0;
// 最长行
String[] lines = new String[2];
// 单词总长度
int totalWordLength = 0;
// 单词总数
int wordCount = 0;
// longest word
List<String> longestWordList = new ArrayList<String>();
BufferedReader bReader = new BufferedReader(new FileReader(fileName));
String readLineString;
while ((readLineString = bReader.readLine()) != null) {
// 记录行总长度。
totalLineLength = totalLineLength + readLineString.length();
// 记录行数
lineCount++;
/* 查找最长的两行记录。begin*/
if (lines[0] == null || readLineString.length() > lines[0].length()) {
// 找到一行比已保存的数据长的记录
lines[0] = readLineString;
if (lines[1] == null || lines[1].length() < lines[0].length()) {
// 检查line1与line2的长度,将小的放在第一位
lines[0] = lines[1];
lines[1] = readLineString;
}
}
/* 查找最长的两行记录。end*/
/* 查找最长的单词。begin*/
StringBuffer wordSB = new StringBuffer();
for(int i = 0; i < readLineString.length(); i ++){
char _char = readLineString.charAt(i);
if(Character.isWhitespace(_char)){
// 如果当前字符为空格符,则说明读取完了一个单词,则跟原有的最长单词进行比较。
if(longestWordList.isEmpty() || wordSB.toString().length() > longestWordList.get(0).length()){
// 如果比原有单词长,则替换掉原有单词。
longestWordList.clear();
longestWordList.add(wordSB.toString());
}else if(true){
// 如果和原有最长单词长度相等,则追加到list当中。
longestWordList.add(wordSB.toString());
}
// 如果比原来最长单词长度小,则不进行任何处理。
// 处理完后还原wordSB。
wordSB = new StringBuffer();
}else{
// 如果不是空格符,则继续拼写该单词
wordSB.append(_char);
}
}
/* 查找最长的单词。end*/
}
StringBuffer resultSB = new StringBuffer();
resultSB.append("the average line length is :" + (((float)totalLineLength) / lineCount)).append("\r\n");
resultSB.append("the longest two lines is :").append("\r\n");
resultSB.append(lines[0]).append("\r\n");
resultSB.append(lines[1]).append("\r\n");
resultSB.append("the average word length" + (((float)totalWordLength) / wordCount)).append("\r\n");
resultSB.append("the longest words are : ").append("\r\n");
for(int i = 0; i < longestWordList.size(); i ++){
resultSB.append(" ").append(longestWordList.get(i));
}
return resultSB.toString();
}
public static void main(String[] args) {
try {
System.out.println(FileContentsCheck.fileStatistics("E:/HessNew.java"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
热心网友
时间:2023-10-13 17:25
兄弟.......
全英文版的.........
当我是神啊...........
热心网友
时间:2023-10-13 17:25
很难么? 基本输出输入的问题