2013-09-29 3 views
0

Я пытаюсь реализовать функцию входа в эту программу. Я, наконец, понял, как сделать базовый, но, к сожалению, я не знаю, как закончить его, например, если пользователь наконец достиг предела 3, он должен закончиться, но мой все еще продолжается, и я не знаю где и какой код я должен привести к его завершению, чем продолжить основную программу.Java Basic Login Feature

импорт 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(""); 

} 

} 

}

Пожалуйста, помогите! И да, это связано с работой в школе :) Спасибо!

+0

Я ценю все ответы благодаря Гиз! Я, наконец, сделал это :) – user2768501

ответ

0

Я бы переписать часть петли, которая обрабатывает вход успешного следующим образом:

if (un.equals(Username) && pw.equals(Password)){ 
     System.out.println("You have successfully logged in!"); 
     break; 
    } 

Обратите внимание, используя ключевое слово перерыва, чтобы вырваться из петли.

Вы можете использовать System.exit(0); для выхода, когда пользователь использовал все попытки входа.

0

Вы должны использовать другую переменную, например: логическое isLoggedIn, и установить, что в случае успешного входа в систему, а затем перерыв вместо продолжать, как показано ниже:

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

Тогда вне для цикла, проверьте (isLoggedIn) и делать действия соответственно.

0

Изменить ваше заявление фи

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


if(trail==4) 
{ 
    //Write your locking logic here 
} 

его не хорошая практика, чтобы трудно кода вещей в вашем коде. Попробуйте использовать файл свойств для простоты, или если у вас есть время использовать JDBC

Чтобы избежать исключения нулевого указателя использовать

Username.equals(un) 
0

Кроме того, убедитесь, что вы будете следовать правильной Java кодирования стандартов, таких как верблюжьей случае для переменной наименовании и весь верхний регистр для констант. Поскольку имя пользователя и пароль жестко закодированы, они являются постоянными константами. Таким образом, изменение

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

в

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

Было бы лучше, если бы вы могли бы загрузить эти константы из файла свойств, так как при изменении пароля, вам не нужно изменять свой код, просто редактировать файл свойств ,

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