Java 需要帮助创建一个数组来读取和写入.txt文件,并按字母顺序列出单词吗

Java 需要帮助创建一个数组来读取和写入.txt文件,并按字母顺序列出单词吗,java,arrays,read-write,Java,Arrays,Read Write,不久前我刚刚开始编写代码,我正在自己处理数组,我在理论上理解它们,但在实际应用方面我需要一些帮助。我让我的导师给我一些练习题,他给了我以下的内容 将此作为主要功能: public static void main(String[] args) { DatosPalabras datos = new DatosPalabras( "words.txt" ); JOptionPane.showMessageDialog(null, datos ); datos.sort(); JOption

不久前我刚刚开始编写代码,我正在自己处理数组,我在理论上理解它们,但在实际应用方面我需要一些帮助。我让我的导师给我一些练习题,他给了我以下的内容

将此作为主要功能:

public static void main(String[] args) {

DatosPalabras datos = new DatosPalabras( "words.txt" );

JOptionPane.showMessageDialog(null, datos );

datos.sort();

JOptionPane.showMessageDialog(null, datos);

} 
(这是西班牙语,请耐心等待)创建一个名为DatosPalabras和words.txt的类,并确保您的代码可以:

  • 读取并显示words.txt
  • 按字母顺序显示“words.txt”中的单词
我真的很感谢你的帮助,我有点困惑,但我很想知道如何才能做到这一点。谢谢大家!

编辑:


您可以创建如下读取数组:

 String[] Array = new String[number of lines in you txt file];
       int i = 0;

           // Selecting the txt file
           File theFile = new File("bla.txt");
           //Creating a scanner to read the file
           scan = new Scanner(theFile);
           //Reading all the words from the txt file
       while (scan.hasNextLine()) {
        line = scan.nextLine();
           Array[i] = line; // gets all the lines
           i++;

然后创建一个排序方法。

在本例中,我有一个名为Q19505617.java的文件。Java只允许每个文件有一个公共类。它是定义main方法的类。因此,这个示例之所以有效,是因为DatosPalabras类包含在该文件中。如果需要DatosPalabras作为其自己的类,则将DatosPalabras放入其自己的名为DatosPalabras.java的文件中,并将类签名更改为
公共类DatosPalabras

import java.io.InputStream;
import java.util.Arrays;
import java.util.Scanner;
import javax.swing.JOptionPane;

public class Q19505617 {
  public static void main(String[] args) {
    DatosPalabras datos = new DatosPalabras("words.txt");
    JOptionPane.showMessageDialog(null, datos);
    datos.sort();
    JOptionPane.showMessageDialog(null, datos);
  }
}

class DatosPalabras {
  private String[] lines;

  public DatosPalabras(String filename) {
    lines = new String[1];
    int lineCounter = 0;
    InputStream in = Q19505617.class.getResourceAsStream(filename);
    Scanner scanner = new Scanner(in);
    while (scanner.hasNextLine()) {
      String line = scanner.nextLine();
      System.out.println(line);
      if(lineCounter == lines.length) {
        lines = Arrays.copyOf(lines, lines.length * 2);
      }
      lines[lineCounter] = line;
      lineCounter++;
    }
  }

  public void sort() {
    // put your real sort algorithm here. until then use this:
  }

  public String toString() {
    StringBuilder b = new StringBuilder();
    for (String line : lines) {
      b.append(line).append("\n");
    }
    return b.toString();
  }
}

投票被否决,因为这个问题没有显示提问者的任何初步研究。你已经试过什么了。预期的实际结果是什么?很抱歉这么含糊,我创建了这个类以及其中的DatosPalabras。我还完成了一个练习,在这个练习中,我必须做一些类似的事情,但通过使用排序方法按升序列出数字(整数和双精度)来比较它们。我只需要知道当涉及到字符而不是数字时该怎么做。结果是按字母顺序显示我正在创建的.txt文件的内容。另外,我很感谢您的快速回复。您是说您需要创建一个包含文本而不是数字的数组(而不是集合)?提供DatosPalabras类作为代码示例会很有帮助。是的,它需要是一个数组,我将在OP中编辑和添加DatosPalabras。该.txt将在我的项目中,所以我只需要阅读它并按字母顺序排序。谢谢回答!但我仍然没有使用集合,我试图完成的部分工作是在不修改给定主类的情况下创建DatosPalabras类:(所有这些都可以在不修改代码中的主类的情况下工作。我这样写只是为了给您提供一个SSCCE。我知道您不想使用集合,但您仍然没有提出任何关于数组的特定问题。哦(没问题)当我开始阅读主线时,我认为这是主线。很抱歉,我的问题是关于DatosPalabras方法,我如何让它在用排序方法排序之前阅读并显示.txt上的单词。Mccamer提供的答案对我来说不起作用,因为它给了我和数组中的错误[I]=line;//获取所有行顺便说一句,在探索代码时,我得到嵌套类型DatosPalabras无法隐藏封闭类型。我看到你给类命名了两次,这与此有关吗?顺便说一句,我真的很感谢你给我的帮助谢谢!非常感谢,你能以不同的方式完成一些事情真是太神奇了。我很高兴投你一票,但我的代表在过多的noob问题后,正在绕着水沟转。
import java.io.InputStream;
import java.util.Arrays;
import java.util.Scanner;
import javax.swing.JOptionPane;

public class Q19505617 {
  public static void main(String[] args) {
    DatosPalabras datos = new DatosPalabras("words.txt");
    JOptionPane.showMessageDialog(null, datos);
    datos.sort();
    JOptionPane.showMessageDialog(null, datos);
  }
}

class DatosPalabras {
  private String[] lines;

  public DatosPalabras(String filename) {
    lines = new String[1];
    int lineCounter = 0;
    InputStream in = Q19505617.class.getResourceAsStream(filename);
    Scanner scanner = new Scanner(in);
    while (scanner.hasNextLine()) {
      String line = scanner.nextLine();
      System.out.println(line);
      if(lineCounter == lines.length) {
        lines = Arrays.copyOf(lines, lines.length * 2);
      }
      lines[lineCounter] = line;
      lineCounter++;
    }
  }

  public void sort() {
    // put your real sort algorithm here. until then use this:
  }

  public String toString() {
    StringBuilder b = new StringBuilder();
    for (String line : lines) {
      b.append(line).append("\n");
    }
    return b.toString();
  }
}