Подтверждение ввода в методе установки [дубликата]

Это объясняется в документах раздела «Порядок оценки» :

... при оценке присвоения правая часть оценивается перед левой стороной.

0
задан karel 5 March 2019 в 04:51
поделиться

3 ответа

public void setYear(String year) {
       if (Integer.parseInt(year) >= 0) {
           //Do stuff here
       }
}

Используйте Integer.parseInt (String s) , чтобы проверить, можно ли преобразовать год строки в целое число, большее или равное нулю (логически, год не может быть отрицательным). Если вход не может быть преобразован в целое число, он выдаст исключение NumberFormatException .

0
ответ дан vs97 5 March 2019 в 04:51
поделиться

Я могу предложить 2 способа сделать это.
Предположим, что строка, которую нужно проверить, равна strYear, и вы считаете действительными все целочисленные значения> = 0.
Первый - принудительное приведение строки к целому числу и отлов любой сброшенной ошибки:

int year = -1;
try {
    year = Integer.parseInt(strYear);
} catch (NumberFormatException e) {
    e.printStackTrace();
}
boolean validYear = (year >= 0);

Второй - удаление всех нечисловых символов в строке и сравнение результата с исходной строкой. Если они одинаковы, то строка состоит только из цифр:

strYear = strYear.trim();
String strOnlyDigits = strYear.replaceAll("\\D", "");
boolean validYear = (!strYear.isEmpty() && strYear.equals(strOnlyDigits));
0
ответ дан forpas 5 March 2019 в 04:51
поделиться
public int year;

public void setYear(String year){
   try {
      year = Integer.parseInt(year);
   } catch(Exception e) {
       e.printStackTrace();
   }
}

Вы можете использовать try и catch, чтобы проверить, является ли ввод числа. Здесь вы пытаетесь разобрать строку в целое число. Если он содержит только число, он сможет успешно преобразовать его. С другой стороны, если у него есть другие символы, он остановится, и вы получите исключение. Try and catch предотвращает сбой вашей программы.

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

String regex = "[0-9]+";
year.matches(regex );
0
ответ дан Semjerome 5 March 2019 в 04:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: