从文件中读取字符串和整数时出错

时间:2016-12-23 13:24:53

标签: java file

所以我是C ++程序员并且我正在学习Java,在读取int和字符串时我遇到了一些问题,因为在Java中的int之后它并没有忽略\ n \ n就像在c ++中使用cin.ignore一样,但是,这就是为什么我决定使用Integer.parseInt ...

虽然,这不是我真正的问题,但我的真正问题是在第二个while循环中,它永远不会结束,即使它读取结束字符*,它也只是不会结束。

这是文件内容:

CircumsTest
25
150754
UnitedPhase
UP
18852
John C
12345678A
Marcal B
23456789B
*
ComunismT
CT
6969
Laura D
22233300T
Alex M
22355567I
*
*

代码,nomCandidat只是一个字符串名称,它将指示候选人的名字,如果没有更多要阅读,它将是*结束。

public static void llegirCircumscripcio(Circumscripcio c) throws FileNotFoundException
{
    File file = new File("ProcesElectoral.txt");
    Scanner sc = new Scanner(file);

    String nomCircumscripcio = sc.nextLine();
    int nEscons = Integer.parseInt(sc.nextLine());
    int votsValids = Integer.parseInt(sc.nextLine());

    String nomPartit, siglesPartit; int votsPartit;
    String nomCandidat, dniCandidat;
    c = new Circumscripcio(nomCircumscripcio,nEscons,votsValids);

    nomPartit = sc.nextLine();
    while(nomPartit != "*"){
        siglesPartit = sc.nextLine();
        votsPartit = Integer.parseInt(sc.nextLine());
        Partit p = new Partit(siglesPartit,nomPartit,votsPartit);

        nomCandidat = sc.nextLine();
        while(nomCandidat != "*"){
            System.out.println(nomCandidat);
            dniCandidat = sc.nextLine();
            p.afegirCandidat(new Candidat(nomCandidat,dniCandidat));
            nomCandidat = sc.nextLine();
        }
        System.out.println("arribo");
        p.mostrarPartit();
        c.afegirPartit(p);
        nomPartit = sc.nextLine();
    }
    sc.close();

}
public static void main(String[] args) throws FileNotFoundException {
    Circumscripcio c = new Circumscripcio();
    llegirCircumscripcio(c);
    c.mostrarCircumscripcio();
    // TODO code application logic here
}

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我的一个问题是我正在使用!=比较字符串,感谢SebVb的响应,以及我所拥有的更大的文件,它不会因为自身的错误而结束。感谢。