/ / Перевірте незаконне введення .nextLine Java [дублікат] - java, введення, керування помилками

Перевірте незаконне введення .nextLine Java [дублікат] - java, введення, обробка помилок

У мене є змінна струна, яка встановлена ​​рівною userInput.nextLine (), я хочу перевірити, чи містить ця рядок що-небудь, крім числових значень.

if(string has non-numeric) {
break;
}

Відповіді:

2 для відповіді № 1

Спробуйте Catch може бути іншим альтернативним способом.

try{
Long.parseInt(string);

зробіть те, що вам колись потрібно робити зі своїм числовим значенням.

}catch(NumberFormatException ex){

}

0 для відповіді № 2

Якщо ви хочете показати себе, використовуйте String.matches () з регулярним виразом. Або ви можете повторити його за допомогою char, використовуючи String.charAt ().


0 для відповіді № 3

Я думаю, що це вдасться

String str1 = "123456";
System.out.println(str1.matches("[^0-9]+"));

Вихідні дані буде false

і якщо ви робите

System.out.println(str1.matches("[0-9]+"));

Вихідні дані буде true


0 для відповіді № 4

використовувати string.matches(regex) функція. Регулярний вираз був би \d+ і перевірити, чи не є вихід false.

  1. The d відомий як Заздалегідь визначені класи персонажів і вираз X+: значить, що X виникає один або кілька разів, що відомо як Квантифікатори.

  2. якщо ви хочете дозволити підписати (+ or -) щоб вважатись частиною числового значення, ви повинні використовувати "[\+\-]?\d+" вираз, який буде відповідати рядку введення "+523" або "-563". Перевірте Документація класу шаблонів для отримання детальної інформації про цей вираз.

  3. Якщо ви хочете дозволити "." у числовому значенні, як у випадку десяткової крапки, Тоді слід використовувати регулярний вираз: "[\+\-]?(\d+|\d*\.\d+)" який буде відповідати проти увесь тип числового введення люблю "1254", "-.256", "+58.235" тощо.

Виберіть будь-який з шаблонів, який задовольнить ваші потреби та порівняння з вхідним рядком, перевіряючи те, до чого це призведе false: означає, що не є дійсним числовим вводом.

String pattern = "[\+\-]?(\d+|\d*\.\d+)" ; // or only \d+
//or [\+\-]?\d+
if(!string.matches(pattern)) // not a valid numeric input    {

}