У мене є змінна струна, яка встановлена рівною 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
.
The
d
відомий як Заздалегідь визначені класи персонажів і виразX+
: значить, щоX
виникає один або кілька разів, що відомо як Квантифікатори.якщо ви хочете дозволити підписати (
+ or -
) щоб вважатись частиною числового значення, ви повинні використовувати"[\+\-]?\d+"
вираз, який буде відповідати рядку введення"+523"
або"-563"
. Перевірте Документація класу шаблонів для отримання детальної інформації про цей вираз.Якщо ви хочете дозволити
"."
у числовому значенні, як у випадку десяткової крапки, Тоді слід використовувати регулярний вираз:"[\+\-]?(\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 {
}