使用类读取文件

时间:2016-01-26 17:29:56

标签: java file file-io

我必须使用一个名为llegir()的方法使用java类读取文件,并且它应该从一系列字符中读取一个单词。在这个方法中还有另一个名为botarBlancs()的方法,这个方法只是知道单词何时结束,因为它找到了一个空白。

全班同学:

public class Paraula {
// Constants públiques

public static final char blanc = ' ';
public static final char fiSequencia = '.';
// Constants privades
// Llargària màxima d'una paraula
private static final int MAXIM = 20;
// ATRIBUTS
private char[] lletres;
private int llargaria; 
// atribut de classe, per simplificar les operacions de lectura
private static char lletra = ' ';
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++EXTRA
private static char[] frase = null;
private static int indice;
// INTERFICIE
// Constructor

public Paraula() {
    lletres = new char[MAXIM];
    llargaria = 0;
}
// llegir una paraula de la seqüència d'entrada

public static Paraula llegir() {
    Paraula nova = new Paraula();
    botarBlancs();
    while ((lletra != fiSequencia) && // No ha acabat la seqüència
            (lletra != blanc)) { // Hi ha prou espai
        nova.lletres[nova.llargaria++] = lletra;
        lletra = leerCarTeclado();
    }
    //System.out.println(nova.girar());
    return nova;
}

// Convertir un objecte Paraula en un String
public String toString() {
    String msg = "";
    for (int idx = 0; idx < llargaria; idx++) {
        msg += lletres[idx];
    }
    return msg;
}
// Per comparar amb une altre objecte Paraula

public boolean esIgualA(Paraula b) {
    boolean iguals = llargaria == b.llargaria;
    for (int idx = 0; (idx < llargaria) && iguals; idx++) {
        iguals = lletres[idx] == b.lletres[idx];
    }
    return iguals;
}
// Per comparar dos objectes Paraula. És un mètode de classe

public static boolean iguals(Paraula a, Paraula b) {
// Fa ús del mètode esIgualA definit abans
    return a.esIgualA(b);
}
// Per determinar si la paraula és buida

public boolean buida() {
    return llargaria == 0;
}
// Mètodes que no formen part de la interfície

// llegir el que sigui necessari fins començar la paraula
public static void botarBlancs() {
    while (lletra == blanc) {
        lletra = leerCarTeclado();
    }
}
// botar-se la resta de caràcters que puguin quedar si la
// paraula és massa llarga.

public static void botarParaula() throws Exception {
    while ((lletra != '.') && (lletra != blanc)) {
        lletra = leerCarTeclado();
    }
}
static public char leerCarTeclado() {
    char res = '.';
    if (frase != null) {
        res = frase[indice++];
    }
    return res;
}

我想要做的是保存文件的一行,然后将其转换为char数组,然后我想使用这个类来读取它等等。

以下是代码:

    public static void generador_de_cartas() throws Exception{
    Paraula pl = new Paraula();
    Paraula nRef, dRef, tipo, codigo;
    FileReader fr = new FileReader("datos_clientes.txt");
    BufferedReader br = new BufferedReader(fr);
    String line = br.readLine();
    char [] linea;
    while (line != null) {
        linea=line.toCharArray();
        linea=pl.llegir();

        line=br.readLine();

    }

    br.close();
    fr.close();
}

当我使用line = pl.llegir()时,Netbeans说Paraula不能转换成char []而且我不明白我做错了什么。 使用这种方法llegir()我想读取文件的每一行。 我想做的另一件事是声明一个Paraula变量,我不知道该怎么做,因为如果我没有错,它是一个char数组,但Netbeans说变量Paraula不能转换为char数组。

请帮帮我, 谢谢!

1 个答案:

答案 0 :(得分:0)

方法llegir()返回Paraulalineachar[]。您可以修改方法,使其返回char[],或将linea更改为Paraula