невозможно понять причину исключения числового формата - PullRequest
2 голосов
/ 09 февраля 2012

Я написал небольшую программу, в которой пользователь вводит минуты, а программа показывает текущие дату и время + минуты, введенные пользователем.

final String DATE_FORMAT_NOW = "MM/dd/yyyy HH:mm:ss";
final DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss", Locale.US);

Calendar cal = Calendar.getInstance();
cal.add(Calendar.MINUTE, Integer.valueOf(sample.getMinutes()));

SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW);
String dt = sdf.format(cal.getTime());

System.out.println(" Date and time with added Minutes : " + (dateFormat.parse(dt));

Sample

private String minutes;

//getter and setter

Я получаю это исключение

java.lang.NumberFormatException: для входной строки: ""

Что я здесь не так делаю? Должен ли я использовать

Integer.parseInt

или

Integer.valueOf(Integer.parseInt(sample.getMinutes())));?

Ответы [ 9 ]

1 голос
/ 11 марта 2012

Проверьте, является ли возвращенная строка из sample.getMinutes() числом или нет.Это должен быть номер без пробела для анализа, в противном случае вы получите NumberFormatException.

1 голос
/ 12 июня 2012
  1. С текущей датой и временем.

    public static void main(String[] args) 
    {
        try 
        {
            final String DATE_FORMAT_NOW = "MM/dd/yyyy HH:mm:ss";
            final DateFormat dateFormat  = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss", Locale.US);
    
            Date sample  = new Date();
            int iMinutes = 30;//minutes added by the user
    
            Calendar cal = Calendar.getInstance();
    
            cal.add(Calendar.MINUTE, Integer.valueOf(sample.getMinutes()));
    
            SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW);
            String dt            = sdf.format(cal.getTime());
    
            System.out.println("Current Date and time:"+sample);
            System.out.println("Date and time with added Minutes : " + (dateFormat.parse(dt)));
        } 
        catch (ParseException ex) 
        {
            Logger.getLogger(NewMain.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    

    Вывод будет отображаться как:
    Текущая дата и время: вт 12 июня 15:57:55 IST 2012
    Дата и время с добавленными минутами: вт. 12 июня 16:54:55 IST 2012
    Здесь минуты «57» были добавлены в календарь, а время сдвинуто на «30» минут.результат (Дата и время с добавленными минутами).

  2. С пользователем во введенных минутах.

    public static void main(String[] args) 
    {
        try 
        {
            final String DATE_FORMAT_NOW = "MM/dd/yyyy HH:mm:ss";
            final DateFormat dateFormat  = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss", Locale.US);
    
            int iMinutes = 30;//minutes added by the user
    
            Calendar cal = Calendar.getInstance();
    
            cal.add(Calendar.MINUTE, iMinutes);
    
            SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW);
            String dt            = sdf.format(cal.getTime());
    
            System.out.println("Current Date and time:"+sample);
            System.out.println("Date and time with added Minutes : " + (dateFormat.parse(dt)));
        } 
        catch (ParseException ex) 
        {
            Logger.getLogger(NewMain.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    

    Это будет работать по вашему желаниюсначала вы берете минуты у пользователя и назначаете эти минуты переменной «iMinutes» в коде, который добавляет к каландру столько минут.

    Вывод будет отображаться как:
    Текущая дата ивремя: вт 12 июн 16:07:55 IST 2012
    дата и время с добавленными минутами: вт 12 июня 16:37:55 IST 2012

А если вы хотите установитьминуты затем используйте «set» вместо «add» в «cal.add».

Надеюсь, это решит вашу проблему.
С уважением.

0 голосов
/ 09 февраля 2012

Добавить какую-то проверку:

final String DATE_FORMAT_NOW = "MM/dd/yyyy HH:mm:ss";
final DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss", Locale.US);

Calendar cal = Calendar.getInstance();
final String minutes = sample.getMinutes()
cal.add(Calendar.MINUTE, Integer.valueOf((minutes != null && !minutes.isEmpty()) ? minutes : 0);

SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW);
String dt = sdf.format(cal.getTime());

System.out.println(" Date and time with added Minutes : " + (dateFormat.parse(dt));
0 голосов
/ 09 февраля 2012

Здесь нет ничего необычного.Прочитайте документы java для parseInt () и valueOf , в котором четко указано, что NumberFormatException выбрасывается, если String не содержит parsable integerempty string "" - это не синтаксический анализ.

Вам решать, как обращаться с такими случаями, для которых выбрасывается NumberFormatException.

0 голосов
/ 09 февраля 2012

java.lang.NumberFormatException: для входной строки: ""

input String "" не может быть преобразовано в действительное целое число.

перед использованием Integer.parseInt убедитесь, что вы получаете целое число следующими способами.

1. предоставить подтверждение JavaScript для проверки int

/ или

2. предоставить проверку на стороне сервера для проверки нецелочисленных строк

также см. как избежать NumberFormatException

0 голосов
/ 09 февраля 2012

java.lang.NumberFormatException: для входной строки: ""

Похоже, вы никогда не устанавливали минуты Строка

0 голосов
/ 09 февраля 2012

java.lang.NumberFormatException: для входной строки: ""

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

Сначала необходимо проверить его (используя что-то вроде String # length () или StringUtils # isBlank ()) и решить, что делать с этим случаем (например, рассматривать его как ноль).

0 голосов
/ 09 февраля 2012

"" - пустая строка, которая не может быть преобразована в действительное целое число при любых обстоятельствах

0 голосов
/ 09 февраля 2012

Проблема в том, что пустая строка не является допустимым целым числом. Ваше приложение должно перехватить исключение и установить разумное значение по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...