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