入力されたコードネームとパスワードをテキストファイルに保存されているものと照合するコードスニペットがあります。一致するものがあればゲームを開始し、すべてが正常です。しかし、一致するものがなければ、再びログインしようとするかどうかを尋ねるダイアログがポップアップされるはずです。forループ後のコードが実行されない(Java)
int input=0; //yes
do {
codename=JOptionPane.showInputDialog(null,"Enter Codename: ");
String password=JOptionPane.showInputDialog(null, "Enter Password: ");
for(int i=0;i<users.length;i++){
if((codename.equals(users[i].getCodeName())) && (password.equals(users[i].getPassword()))){
System.out.println("\n\nCorrect");
new Game();
} else {
System.out.println("\n\nIncorrect");
}
}
input = JOptionPane.showConfirmDialog(null, "Incorrect User name/Password\nWould you like to try again?");
} while(input==0); //run while input is yes
問題:ループが実行されないために後のコード。私はユーザーに対して[私は]のための変数をチェックすると、forループの後のコードは実行されませんが、私は[]などのユーザーに対してチェックし、それはうまく動作します。
この問題であればわからないが、私はいつもこのエラーが出る:
Exception in thread "main" java.lang.NullPointerException
at com.ramtin.Game.logOn(Game.java:505)
at com.ramtin.Game.main(Game.java:397)
は私がパスワードとコードネームが一致し、プログラムを完全に実行しても、それを得ます。
上記のコードのためのFULL CODE:UserDataのため
public static void logOn(){
//ASK FOR CODENAME & PASSWORD FROM TEXTFILE BEFORE GAME BEGINS
//read from text file
UserData[]users=new UserData[20];
int countU=0;
try{
BufferedReader readU = new BufferedReader(new FileReader("userdata.txt"));
String line;
while((line=readU.readLine())!=null){
String []parts=line.split("#");
String codeName = parts[0];
String password=parts[1];
// System.out.println(parts[0]);
// System.out.println(parts[1]);
users[countU]=new UserData(codeName, password);
countU++;
}
readU.close();
}
catch(FileNotFoundException e){
}
catch(IOException e){
}
//PASSWORD & CODENAME
int input=0; //yes
do{
codename=JOptionPane.showInputDialog(null,"Enter Codename: ");
String password=JOptionPane.showInputDialog(null, "Enter Password: ");
for(int i=0;i<users.length;i++){
if((codename.equals(users[i].getCodeName()))&&(password.equals(users[i].getPassword()))){
System.out.println("\n\nCorrect");
new Game();
}
else{
System.out.println("\n\nIncorrect");
}
}
input = JOptionPane.showConfirmDialog(null, "Incorrect Username/Password\nWould you like to try again?");
}
while(input==0); //run while input is yes
}
}
FULL CODE:
public class UserData {
private String codename;
private String password;
UserData (String codeName, String password)
{
this.codename = codeName;
this.password= password;
}
String getCodeName()
{
return codename;
}
String getPassword()
{
return password;
}
public String toString()
{
String temp = "\nCode name: "+codename+"\nPassword: " + password;
return temp;
}
}
ユーザーアレイはどのように見えますか?インデックス2より前のユーザーには、あなたが思うものが含まれていないため、例外がスローされるように思えます。コンソールの実行が終了したらどうなるでしょうか?パスワード/コードネームが間違っているとき –
@MasterYoda それはこのことを言う: java.lang.NullPointerExceptionがcom.ramtin.Game.logOn(Game.java:505)com.ramtin.Game.mainで \t(で \t Game.java:397) それは正しいと同じことを言うが、それはゲームを開始し、すべて正常に動作する。 users配列は、Stringコード名とStringパスワード変数を保持するクラス図で構成されます。 – badProgrammer
画面397または505のいずれかの行ですか? – JensS