Как преобразовать String в int?

Вот код, я пытаюсь преобразовать минуты, которые имеют тип String, в целочисленный тип, но у меня возникает ошибка NumberFormatException, может ли кто-нибудь мне помочь, как я справлюсь с этой ситуацией. Спасибо.

import java.util.Date;

class DateDemo 
{
    public static void main(String args[]) 
    {
        // Instantiate a Date object
        Date date = new Date();

        // display time and date
        String str = String.format("Current Minutes : %tM", date );
        try
        {
            int a = Integer.valueOf(str);
            System.out.print(a);

        }
        catch(NumberFormatException e)
        {
            System.out.println("Error is : "+e);
        }
    }
}

Какой номер вы ожидаете получить от "Current Date/Time"? Каков ожидаемый результат?

Guy 08.04.2018 13:41
stackoverflow.com/q/25385173/3579095
Lars 08.04.2018 13:44

Каково значение String str в момент, когда вы пытаетесь его проанализировать?

Shingala94 08.04.2018 13:46

У меня эта ошибка: java.lang.NumberFormatException: для входной строки: «Текущая дата / время: 43», на самом деле я хочу, чтобы программа преобразовала этот «43», который является строкой, в целочисленный тип.

Umar Khan 08.04.2018 13:49

@PatrickNijhuis 50

Umar Khan 08.04.2018 13:50

@umar khan - это значение str или значение минут. Сообщение об ошибке содержит всю строку, которую вы пытаетесь проанализировать.

Shingala94 08.04.2018 13:51

@PatrickNijhuis, это значение минут, я, Герадж, только что сказал мне, что я пытаюсь проанализировать всю строку, затем я исправил ее, и теперь она работает. ;)

Umar Khan 08.04.2018 13:57
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
8
7
179
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Использовать

String str = String.format("%tM", date );

Вы получаете исключение, потому что пытаетесь преобразовать строку «Текущая дата / время: xx» в число;

Это работает, спасибо, чувак! ;)

Umar Khan 08.04.2018 13:52
    LocalTime now = LocalTime.now(ZoneId.of("Indian/Mahe"));
    int currentMinuteOfHour = now.getMinute();
    System.out.println(currentMinuteOfHour);

На моем компьютере это только что напечатано

53

Нет необходимости преобразовывать минуты в строку и анализировать ее.

Кроме того, класс Date давно устарел (это не каламбур). Лучше использовать java.time, современный API даты и времени Java. С ним намного приятнее работать. И, как видите, он обеспечивает гораздо более простой код.

Текущая минута зависит от часового пояса. Поэтому укажите предполагаемый часовой пояс, в котором я поместил Indian / Mahe. Вы можете использовать текущую настройку часового пояса JVM: ZoneId.systemDefault(). Этот параметр может быть изменен в любое время другими частями вашей программы или другими программами, работающими в той же самой JVM.

Что пошло не так в вашем коде? Ваш вызов String.format() произвел строку типа Current Minutes : 43. Это не соответствует синтаксису целого числа (только 43). Следовательно, вы получили исключение при попытке разобрать его с помощью Integer.valueOf(str).

Ссылка на руководство:Учебник Oracle: Дата и время объясняет, как использовать java.time.

Я понимаю, спасибо за ссылку. ;)

Umar Khan 08.04.2018 14:28

Это неправильный способ получить минуты. Если вы используете Java 8 или более позднюю версию, вы можете сделать это, чтобы получить минуты

LocalDateTime localDateTime=LocalDateTime.now();
System.out.println(localDateTime.getMinute()); 

Верно, что это правильное решение. Он также работает в Java 6 и 7, когда вы добавляете ThreeTen Backport в свой проект программирования.

Ole V.V. 08.04.2018 14:01

Другие вопросы по теме