Как преобразовать строку в int? [дубликат]

avatar
Umar Khan
8 апреля 2018 в 11:39
194
3
-8

Вот код, я пытаюсь преобразовать минуты, которые имеют тип 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);
        }
    }
}
Источник
Guy
8 апреля 2018 в 11:41
1

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

Lars
8 апреля 2018 в 11:44
1

coderhelper.com/q/25385173/3579095

Shingala94
8 апреля 2018 в 11:46
1

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

Umar Khan
8 апреля 2018 в 11:49
0

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

Umar Khan
8 апреля 2018 в 11:50
0

@PatrickNijhuis 50

Shingala94
8 апреля 2018 в 11:51
0

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

Umar Khan
8 апреля 2018 в 11:57
0

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

Ответы (3)

avatar
Geraj
8 апреля 2018 в 11:49
1

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

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

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

Umar Khan
8 апреля 2018 в 11:52
0

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

avatar
nitnamby
8 апреля 2018 в 11:54
2

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

LocalDateTime localDateTime=LocalDateTime.now();
System.out.println(localDateTime.getMinute()); 
Ole V.V.
8 апреля 2018 в 12:01
1

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

avatar
Ole V.V.
8 апреля 2018 в 11:53
2
    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: Date Time объясняет, как использовать java.time.

Umar Khan
8 апреля 2018 в 12:28
0

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