public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int i = scan.nextInt();
scan.nextLine();
double d = scan.nextDouble();
scan.nextLine();
String s = scan.nextLine();
System.out.println("String: " + s);
System.out.println("Double: " + d);
System.out.println("Int: " + i);
}
У вас может быть функция, подобная приведенной ниже, путем циклирования символов и использования метода строки charCodeAt
, как показано ниже.
Примечание. Это относится к вопросу, поднятому в нижней ссылке.
проверка строки для 3 или более последовательных алфавитно-цифровых символов в javascript
function validate() {
var pwd = document.getElementById('password').value;
var isValid = checkPassword(pwd);
var elm = document.getElementById('result');
elm.innerHTML = isValid ? 'Valid' : 'Invalid';
elm.style.color = isValid ? 'green' : 'red';
}
function checkPassword(s) {
if(s) {
var test = (x) => !isNaN(x);
var check = (x, y, i) => x + i === y;
for(var i = 0; i < s.length - 2; i++) {
if(test(s[i])) {
if(test(s[i + 1]) && test(s[i + 2])) {
if(check(s[i], s[i + 1], 1) &&
check(s[i], s[i + 2], 2)) {
return false;
}
}
} else if(!test(s[i + 1]) && !test(s[i + 2])) {
if(check(s.charCodeAt(i), s.charCodeAt(i + 1), 1) &&
check(s.charCodeAt(i), s.charCodeAt(i + 2), 2)) {
return false;
}
}
}
}
return true;
}
document.getElementById('buttonToValidate').click();
<input type="text" id="password" value="efg123!$" />
<input type="button" id="buttonToValidate" value="Check" onclick="validate()" />
<span id="result" />
Невозможно использовать RegEx, о котором я знаю, но вот наивный функциональный подход.
Сначала прокрутите строку и сравните каждый символ с двумя следующими символами, добавив +1 и +2 к текущему индексу и соответствующим образом сопоставлять.
Во-вторых, повторите цикл и сравните проверки следующих двух символов с текущим символом, чтобы увидеть, являются ли они последовательными.
Если обе петли не могут найти последовательные символы, функция возвращает true, в противном случае возвращает false.
Первые четыре возвращают false (fail), а последние три возвращают true (pass ).
function test(s) {
// Check for sequential numerical characters
for(var i in s)
if (+s[+i+1] == +s[i]+1 &&
+s[+i+2] == +s[i]+2) return false;
// Check for sequential alphabetical characters
for(var i in s)
if (String.fromCharCode(s.charCodeAt(i)+1) == s[+i+1] &&
String.fromCharCode(s.charCodeAt(i)+2) == s[+i+2]) return false;
return true;
}
// For demo purposes only
var tests = [
'efg123!$',
'abcd567%',
'xyz789^&',
'#hijk23456',
'ryiiu562@',
'erty745#',
'gjnfl45566^'
], sep = '\t\u2192 ', out = ['Fail','Pass'], eol = '<br>';
document.write('<pre>');
for(var i in tests) document.write(tests[i] + sep + out[+test(tests[i])] + eol);
document.write('</pre>');