2016-08-19 4 views
0

Только что начал преподавать, как программировать Java. Первая часть - это простое математическое уравнение, где пользователь должен найти значение «n». Есть ли «if» или «else», если ответ правильный (21), как мне обойти else и запустить оставшуюся часть программы, а если «else» - как завершить работу программы после двух попыток?Построение пароля в Java

import java.util.Scanner; 
import java.util.Random; 

public class Bot { 

    public static void main(String[] args) {   
     System.out.println("(6*7)%2=n"); 
     int InQuestion; 
     System.out.println("what is the value of ' n' in the equation"); 
     Scanner ScannedNumber = new Scanner (System.in); 
     int n = ScannedNumber.nextInt(); 
     InQuestion= n; 

     if (InQuestion==21) 
      System.out.println("Access Allowed"); 
      //*If 'Access Allowed' then permit the rest of the program to run consequently 
      //*passing the 'else' branch. 
     else 
      System.out.println("try again"); 

     for(n=0; n>2; n++);{ 
      int n1=ScannedNumber.nextInt(); 
      if (n1==21); 
       System.out.println("Access Denied"); 
       System.exit(0); 
     } 

     System.out.println("Hello I Am Bot"); 
     System.out.println("What is Your Name?"); 
     Scanner VariableNamePerry=new Scanner(System.in); 
     System.out.print("Hello," +VariableNamePerry.nextLine()); 
     Scanner VariableNamecalculate=new Scanner (System.in); 
     System.out.println(" What can I do for you?"); 
     System.out.print(VariableNamecalculate.nextLine()); 
     System.out.print(" what?"); 
     Scanner VariableNameThatIsWhatIWantYouToDo=new Scanner (System.in); 
     System.out.println("I Can Calculate The Square Of Any Number, If that Is What You Want?" +VariableNameThatIsWhatIWantYouToDo.nextLine()); 
     Scanner VariableNameOkay=new Scanner (System.in); 
     System.out.println(VariableNameOkay.nextLine()+ (" then")); 
     System.out.println("Give me a number..."); 

     Scanner VariableName1=new Scanner (System.in); 
     for(int MyVar=0; MyVar<1000; MyVar++){ 
      int MyVar1 = VariableName1.nextInt(); 
      System.out.println(MyVar1*MyVar1); 
      System.out.println("give me another number please?") 
     } 
    } 
} 
+0

Начните с форматирования кода целиком; его трудно читать. – chrylis

+0

Начните с следующих соглашений об именах и форматировании. Используйте комментарии. Переменные имени начинаются с нижнего регистра, а не верхнего. Назовите varialbes что-то, что описывает то, что они не «VariableNameThatIsWhatIWantYouToDo». И вам не нужен новый сканер для каждой строки ввода, которую вы хотите прочитать. Вы можете использовать один и тот же. – nhouser9

+0

@ nhouser9 Код должен быть доступен для чтения, если комментарии не нужны. Хорошие соглашения об именах должны быть единственным источником описания, в котором вы нуждаетесь. –

ответ

0

Вы хотите разместить блоки вокруг своего оператора if и else, чтобы охватить их. Если вы хотите остановиться после двух попыток, вы можете использовать цикл while или делать цикл while, а счетчик простых счетчиков - количество попыток, а при неправильном приращении счетчика.

0

Вы можете использовать цикл для прохождения через начальную часть кода до тех пор, пока не будет предоставлен доступ или не закончились попытки. И если доступ был предоставлен, просто используйте какой-то индикатор при выходе из цикла.

int attempts = 2; 
boolean accessGranted = false; 
for (int q = 0; q < attempts; q++){ 
    System.out.println("(6*7)%2=n"); 
    int InQuestion; 
    System.out.println("what is the value of ' n' in the equation"); 
    Scanner ScannedNumber = new Scanner (System.in); 
    int n = ScannedNumber.nextInt(); 
    InQuestion= n; 

    if (InQuestion==21){ 
     System.out.println("Access Allowed"); 
     accessGranted = true; 
     break; 
    } 
    else 
     System.out.println("try again"); 
} 
if (accessGranted){/*rest of program*/} 
0

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

Вот пример:

public static void main(String[] args) { 
    System.out.println("(6*7)%2=n"); 
    int InQuestion; 
    System.out.println("what is the value of ' n' in the equation"); 
    Scanner ScannedNumber = new Scanner (System.in); 
    int n = ScannedNumber.nextInt(); 
    InQuestion= n; 

    if (InQuestion==21){ 
     System.out.println("Access Allowed"); 
     program(args); 
    //*If 'Access Allowed' then permit the rest of the program to run consequently 
    //*passing the 'else' branch. 
    } else { 
     System.out.println("try again"); 
     for(n=0; n>2; n++){ 
      int n1=ScannedNumber.nextInt(); 
      if (n1==21); 
      System.out.println("Access Denied"); 
      System.exit(0);     
     } 
    } 
} 

public static void program(String[] args){ 
    System.out.println("Hello I Am Bot"); 
    System.out.println("What is Your Name?"); 
    Scanner VariableNamePerry=new Scanner(System.in); 
    System.out.print("Hello," +VariableNamePerry.nextLine()); 
    Scanner VariableNamecalculate=new Scanner (System.in); 
    System.out.println(" What can I do for you?"); 
    System.out.print(VariableNamecalculate.nextLine()); 
    System.out.print(" what?"); 
    Scanner VariableNameThatIsWhatIWantYouToDo=new Scanner (System.in); 
    System.out.println("I Can Calculate The Square Of Any Number, If that Is What You Want?" +VariableNameThatIsWhatIWantYouToDo.nextLine()); 
    Scanner VariableNameOkay=new Scanner (System.in); 
    System.out.println(VariableNameOkay.nextLine()+ (" then")); 
    System.out.println("Give me a number..."); 

    Scanner VariableName1=new Scanner (System.in); 
    for(int MyVar=0; MyVar<1000; MyVar++){ 
     int MyVar1 = VariableName1.nextInt(); 
     System.out.println(MyVar1*MyVar1); 
     System.out.println("give me another number please?"); 
    } 
} 

как сказал Nkdy, вы можете использовать время цикла, чтобы добавить к междунар до тех пор, пока не достигнет заданного предела.

+0

Спасибо за помощь, можете ли вы дать мне пример цикла while, мне сложно с логикой и главным образом синтаксисом. Я также не могу заставить работать «breaks» либо – Anaphase

+0

@Anaphase. Цикл «while» в основном разделен на цикл 'for' и принимает только один параметр:' while (MyVar <1000) {DoStuff(); } 'Итак, в цикле' for' вы можете создать новый int и увеличить его в пределах параметров. С помощью цикла while вы можете указать только логику. – Kivitoe

Смежные вопросы