2014-11-08 4 views
2

В настоящее время я выполняю задание для своего класса программирования Java.Пароль с конкретными требованиями Программа

Вопрос в книге просит пользователя создать программу, которая использует блоки JOptionPane, чтобы запросить у пользователя пароль. Пароль должен быть от 6 до 10 символов и иметь по крайней мере одну цифру и одну букву. После выполнения этого требования попросите пользователя подтвердить свой пароль. Если их второй вход не совпадает с первым, задайте исходный вопрос еще раз. Как только оба входа совпадут, отобразите сообщение «success!».

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

import javax.swing.JOptionPane; 
class Password{ 
    public static void main(String[] args){ 

     String input1 = ""; 
     String input2 = ""; 
     int inputLength; 

     do{ 
     do{ 

      input1 = JOptionPane.showInputDialog(null, "Enter your password\nIt must be 6 to 10 characters and\nhave at least one digit and one letter"); 

      inputLength = input1.length(); 

     }while(inputLength < 6 || inputLength > 10); 

     input2 = JOptionPane.showInputDialog(null, "Verify Password"); 

     }while(!(input1.equals(input2))); 

     JOptionPane.showMessageDialog(null, "Success!"); 

    } 
} 
+6

Спасибо за показывая, что это домашнее задание, чтобы мы могли помочь привести вас к ответу, а не просто предоставление. Ответчики - сделайте именно это; новые пользователи, которым нужна помощь в выполнении домашних заданий - следуйте этому примеру – snickers10m

+0

Есть ли у вас опыт регулярных выражений? – user432

+0

Можно ли использовать Regex? Если да, попробуйте использовать некоторые базовые учебники регулярных выражений, чтобы написать простое регулярное выражение. В противном случае попробуйте выполнить итерацию charArray (input1.toCharArray()) и отслеживать, если по крайней мере одна цифра и один алфавит. –

ответ

3

Вы можете иметь дело с регулярным выражением.

  • (? =. * \ D) означает, наконец, по одной цифре в слове
  • (? =. * [A-Za-Z]) означает, по меньшей мере, одна буква
  • {6,10} означает, от 6 до 10 символов

Так правильное регулярное выражение ((? =. \ D) (? =. [A-Za-Z]). {6 , 10})

Теперь рассмотрим метод `.matches (String) регулярное выражение из строки :)

Если вы не можете использовать регулярное выражение:

  • Получить CharArray (input1.toCharArray()) и итерацию.
  • Для каждого полукокса, проверьте, если это число или символ
  • Keep 2 булево (для Exemple NUM и альфа) и установить их верно, когда вы видите ряд персонажа

Тогда, смотрите у вас флага, а затем проверить этот

num && alpha && inputLenght > 6 && inputLenght < 10

Edit:

Вы можете использовать Character.isLetter() и Character.isDigit(), я думаю, у вас достаточно информации сейчас!

0

Выяснил это! В итоге я добавил два цикла, чтобы проверять цифры и буквы внутри внутреннего цикла do. Я устанавливаю петли while, чтобы сделать логические выражения ложными, если найдена правильная вещь (я знаю, это кажется обратным). Но это делает так, чтобы цикл do не запускался снова, если найдены правильные символы. Спасибо всем, кто опубликовал, это действительно помогло разобраться!

Вот завершенный код:

import javax.swing.JOptionPane; 
class Password{ 
    public static void main(String[] args){ 

     String input1 = ""; 
     String input2 = ""; 
     int inputLength; 
     boolean isDigit = true; 
     boolean isLetter = true; 
     char c = ' '; 
     char d = ' '; 
     int x = 0; 

     do{ 
     do{ 

      input1 = JOptionPane.showInputDialog(null, "Enter your password\nIt must be 6 to 10 characters and\nhave at least one digit and one letter"); 

      inputLength = input1.length(); 

      while(x < input1.length()){ 
       c = input1.charAt(x); 

       if(Character.isDigit(c)){ 
        isDigit = false; 
        break; 
       } 
       x++; 
      } 

      x = 0; 
      while(x < input1.length()){ 
       d = input1.charAt(x); 

       if(Character.isLetter(d)){ 
        isLetter = false; 
        break; 
       } 
       x++; 
      } 

     }while(inputLength < 6 || inputLength > 10 || isDigit || isLetter); 

     input2 = JOptionPane.showInputDialog(null, "Verify Password"); 

     }while(!(input1.equals(input2))); 

     JOptionPane.showMessageDialog(null, "Success!"); 

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