0

このプログラムにログイン機能を実装しようとしています。私はついに基本的な方法を理解しましたが、悲しいことにそれを終了する方法がわかりません.たとえば、ユーザーが最終的に3の制限に達した場合は終了する必要がありますが、私のものはまだ続き、わかりません.メインプログラムに進むよりも、終了するためにどこにどのコードを配置する必要がありますか。

java.io.* をインポートします。

パブリッククラスのパスワード{

public static void main(String args[]) throws IOException{

    String name, un, pw;
    String Username = "passwordtest";
    String Password = "test123";
    int stud;
    double math, science, english, filipino, social, ave, sum, fingrade;

    BufferedReader inpt = new BufferedReader (new InputStreamReader(System.in));

    for(int trial=1; trial<=3; trial++){
    System.out.print("Username: ");
    un = inpt.readLine();

    System.out.print("Password: ");
    pw = inpt.readLine();

    System.out.println("");

    if (un.equals(Username) && pw.equals(Password)){
        System.out.println("You have successfully logged in!");
        trial=trial+2;
        continue;
    }else{
        System.out.println("Sorry, Incorrect Username/Password");
        System.out.println("Please Try Again");
        System.out.println("");
        }
    }
    System.out.println("");

    System.out.println("Welcome to ITMinions' Grading System!");
    System.out.println("How many students' grades would you like to record?");
    System.out.print("Answer: ");
    stud=Integer.parseInt(inpt.readLine());

    System.out.println("");

for (int ctr=1; ctr<=stud; ctr++){
    System.out.print("Name of the student: ");
    name = inpt.readLine();

    System.out.println("");
    System.out.println("Input the following grades");

    System.out.print("Math: ");
    math = Double.parseDouble(inpt.readLine());

    if(math<65 || math>100){
        System.out.println("");
        System.out.println("Wrong input, try again.");
        System.out.println("");
        ctr=ctr-1;
        continue;
    }

    System.out.print("Science: ");
    science = Double.parseDouble(inpt.readLine());

    if(science<65 || science>100){
        System.out.println("");
        System.out.println("Wrong input, try again.");
        System.out.println("");
        ctr=ctr-1;
        continue;
    }

    System.out.print("English: ");
    english = Double.parseDouble(inpt.readLine());

    if(english<65 || english>100){
        System.out.println("");
        System.out.println("Wrong input, try again.");
        System.out.println("");
        ctr=ctr-1;
        continue;
    }

    System.out.print("Filipino: ");
    filipino = Double.parseDouble(inpt.readLine());

    if(filipino<65 || filipino>100){
        System.out.println("");
        System.out.println("Wrong input, try again.");
        System.out.println("");
        ctr=ctr-1;
        continue;
    }

    System.out.print("History: ");
    social = Double.parseDouble(inpt.readLine());

    if(social<65 || social>100){
        System.out.println("");
        System.out.println("Wrong input, try again.");
        System.out.println("");
        ctr=ctr-1;
        continue;
    }

    sum=math+science+english+filipino+social;
    ave=sum/5;

    System.out.println("");
    System.out.println("The average of " + name + " is: " + ave);
    System.out.println("");

 }

}

}

助けてください!はい、これは学校の課題に関連しています:)ありがとう!

4

5 に答える 5

0

以前の回答を明確にするには:

booelan isLoggedIn = false;
for ( int trials = 3; trials > 0; trials-- )
{
  <ask uname, password> // Java convention: don't capitalise variable names
  if ( isLoggedIn = <uname/password are OK> {
    System.out.println ( "Success" );
    break;
  }

  System.out.printf ( "Bad uname/pass, %d attempts remaining\n", trials );
}

if ( !isLoggedIn ) {
  System.out.println ( "User couldn't give valid credentials, quitting after three attempts, due to security reasons" );
  Thread.sleep ( 3000 ) // try to fight brute-force attackers 
  System.exit ( 1 ); // Not zero, it's not a regular end 
}

// Go ahead with your application
于 2013-09-29T10:17:30.687 に答える
0

また、変数の命名にはキャメルケース、定数にはすべて大文字など、適切な Java コーディング標準に従っていることを確認してください。ユーザー名とパスワードはハードコードされているため、実際には定数です。だから、変えて

String Username = "passwordtest";
String Password = "test123";

final String USERNAME = "passwordtest";
final String PASSWORD = "test123";

また、これらの定数をプロパティ ファイルからロードできればさらによいでしょう。パスワードが変更された場合、コードを変更する必要はなく、プロパティ ファイルを編集するだけだからです。

于 2013-09-29T10:09:57.197 に答える