【问题标题】:Bibliography Program Java参考书目程序 Java
【发布时间】:2013-06-26 13:44:39
【问题描述】:

我正在尝试创建一个程序,该程序读取一个未按字母顺序排列的参考书目文本文件,然后打印出新按字母顺序排列的一个。我已经到了我的程序可以识别每行的第一个字母(我打印出来是肯定的)的地步,但我不知道如何实现代码,以便程序可以按字母顺序重新排列行。

这是我没有使用 displayCorrectBib 方法的更新代码,但我仍然没有输出:

package hw6;

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Hw6 {

    public static void main(String[] args) throws Exception {
//read in a works cited text file
        BufferedReader fin = new BufferedReader(new FileReader("Bibliography.txt"));

//        String line = null;  

        displayIncorrectBib(fin);

        ArrayList<String> lines = new ArrayList<String>();

        while ((line = fin.readLine()) != null) {
            lines.add(line);
        }

        Collections.sort(lines);

        for (String s : lines) {
            System.out.println(s);
        }

        displayCorrectBib(lines);


        fin.close();                //close BufferedReader
    }
    public static String line;
    public static char[] stringArray;

    public static void displayIncorrectBib(BufferedReader fin) throws Exception {

        System.out.println("Incorrectly Alphabetized Bibliography:");

        while ((line = fin.readLine()) != null) {

            toChar(line);                            //call toChar to convert string to char

            System.out.println(line);             //print unalphabetized bibliography on separate lines

        }
        System.out.println();

    }
    public static char[] letters = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
        'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};

    public static char toChar(String line) {
        //convert string line to character array
        stringArray = line.toCharArray();

        System.out.println(stringArray[0]);

        return stringArray[0];
    }

    public static void displayCorrectBib(List<String> lines) {
        System.out.println("Correctly alphabetized Bibliography: ");


    }
}

【问题讨论】:

  • 发布示例文本文件
  • Searles、Baird 和 Martin Last。科幻小说读者指南。纽约:Facts on File, Inc.,1979 年。Boorstin, Daniel J. The Creators: A History of the Heroes of the Imagination。纽约:随机,1992 年。图默,让。甘蔗。埃德。达尔文 T. 特纳。纽约:诺顿,1988 年。霍尔,唐纳德,编辑。牛津美国识字轶事书。纽约:牛津大学出版社,1981 年。Allen, Thomas B. 正在消失的北美野生动物。华盛顿特区:国家地理学会,1974 年。
  • ^^ 这些是我尝试按字母顺序打印的书目来源

标签: java arrays bufferedreader rank


【解决方案1】:

为什么不只使用排序?

ArrayList<String> lines = new ArrayList<String>();
String line;
while ((line = fin.readLine()) != null) {
       lines.add( line );
}

Collections.sort(lines);

并显示:

public static void displayCorrectBib( List<String> lines ) {
    for( String s : lines )
    {
        System.out.println(s);
    }
}

这里是完整的形式:

 public static void main(String[] args) throws Exception {
    //read in a works cited text file
    BufferedReader fin = new BufferedReader(new FileReader("Bibliography.txt"));

    ArrayList<String> lines = new ArrayList<String>();
    String line;
    while ((line = fin.readLine()) != null) {
        lines.add( line );
    }

    Collections.sort(lines);

    for( String s : lines )
    {
        System.out.println(s);
    }

    fin.close();                //close BufferedReader
}

【讨论】:

  • 注意:如果您在 displayIncorrectBib 之后这样做,这将不起作用,因为 fin 将是空的。另外,我认为Arrays.sort 仅适用于数组。请改用Collections.sort
  • 如何打印按字母顺序排列的代码?在 displayCorrectBib 方法中?
  • 我收到一个编译器错误,内容为“for each not applicable to expression type”我可能没有正确调用我的方法,或者在 displayCorrectBib 中写入正确的参数。
  • @user2532816:试试上面的。
  • 很遗憾我没有看到任何输出
猜你喜欢
  • 1970-01-01
  • 2019-03-24
  • 2017-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-07
相关资源
最近更新 更多