Java 变量始终停留在1

Java 变量始终停留在1,java,for-loop,java.util.scanner,Java,For Loop,Java.util.scanner,我有一个任务,需要使用文本文件中的信息填充二维数组。我试图让每一件事,甚至使用primekey变量来代替我暂时使用的poscon。阻止我这样做的是,primekey不会因为另一个原因而正确递增 (主要问题)卡住的变量,即emailcheck变量。我很确定这与for循环语法有关,但我不太明白 ... try{ Scanner check = new Scanner(file); Scanner checkNext = new Scanner(file);

我有一个任务,需要使用文本文件中的信息填充二维数组。我试图让每一件事,甚至使用primekey变量来代替我暂时使用的poscon。阻止我这样做的是,primekey不会因为另一个原因而正确递增

(主要问题)卡住的变量,即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

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

我建议你适当地缩进代码。问题可能会变得更清楚。您的
primekey
仅在
sort==6
的情况下递增,但是您在哪里设置此变量?emailcheck应该包含什么?什么时候应该是0,什么时候应该是1?我不知道你想要达到什么/期望的输出。调试器的典型问题。请用它。
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