变量总是停留在1

时间:2014-12-04 08:48:36

标签: java for-loop java.util.scanner

我有这个任务,我需要使用文本文件中的信息填充二维数组。我试图使用primekey变量来替换我暂时使用的poscon。阻止我做这件事的原因是,由于另一个

,primekey不会增加

(MAIN PROBLEM)卡住的变量,即emailcheck变量。我很确定它与我的for循环语法有关,但我无法弄明白。

       ...

try{
    Scanner check = new Scanner(file);
    Scanner checkNext = new Scanner(file);       

    System.out.println("Success File load");
    String data=check.next();
    System.out.println("data.next() works");

    int emailcheck=0;
    int primekey=0;

    while(check.hasNext()){
        posCon++;
        //check for @ symbol
        for(int i=0;i<data.length();i++){
            if(data.charAt(i)=='@'){
                emailcheck=emailcheck+1;
            }
        }

        //populates position array
        if(data.equalsIgnoreCase("staff")||
                data.equalsIgnoreCase("freshman")||
                data.equalsIgnoreCase("sohmore")||
                data.equalsIgnoreCase("junior")||
                data.equalsIgnoreCase("senior")||
                data.equalsIgnoreCase("adjunct")||
                data.equalsIgnoreCase("professor"))
        {
            db[0][posCon]=data;
            sort=1;
            data=check.next();

        }
        //id
        else if(sort==1){
            db[1][posCon]=data;
            sort=2;
            data=check.next();
        }
        //firstname
        else if(sort==2){
            db[2][posCon]=data;
            sort=3;
            data=check.next();
        }
        //lastname
        else if(sort==3){
            db[3][posCon]=data;
            sort=4;
            data=check.next();
        }
        //department
        else if(sort==4){
            db[4][posCon]=data;
            sort=5;
            data=check.next();
        }
        //email
        else if(sort==5 && emailcheck==1){
            db[5][posCon]=data;
            sort=6;
            emailcheck=0;
        }
        else if(sort==5 && emailcheck==0){
            db[5][posCon]="not here";
            sort=6;
        }
        //room
        else if(sort==6){
            db[6][posCon]=data;
            sort=0;
            data=check.next();
            emailcheck=0;
            primekey=primekey+1;
            System.out.println(primekey);
        }
        else{
            sort=0;
            data=check.next();
            emailcheck=0;
        }

    }
}catch(FileNotFoundException e) {
    e.printStackTrace();
}
}//End Constructor

这是来自文本文件的数据

Staff 77778 Julie Chang Registrar
Adjunct 19778 Mike Thompson CS mtxxx@gmail.com GITC2400
Staff 30041 Anne Mathews Security
Junior 98444 Serene Murray Math smyyy@gmail.com
Freshman 98772 Bob Mathew CS bmyyy@gmail.com
Professor 19010 Joan Berry Math jbxxx@gmail.com GITC2315C
Professor 19871 Aparna Khat CS akxxx@gmail.com GITC1400
Adjunct 18821 Hari Mentor Physics hmxxx@gmail.com CK231
Staff 20112 Jim George Plant
Junior 68339 Tom Harry CS thyyy@gmail.com
Senior 78883 Vince Charles IT vcyyy@gmail.com
Freshman 87777 Susan Han EE shyyy@gmail.com
Senior 88888 Janki Khat IE jkyyy@gmail.com
Staff 5555 Aparna Sen Plant
Senior 66663 Jill Kaley it jk@jk.com
Staff 77777 Joe Batra plumbing
Staff 33333 Jim Natale Plumbing

1 个答案:

答案 0 :(得分:1)

你在错误的地方调用了data = check.next(),它应该在循环开始之后使用check.hasNext()测试,而不是其他地方。您只需要一个Scanner实例,您声明的第二个实例是冗余的。