Перейти к содержимому

Как преобразовать double в string java

  • автор:

Как превратить String в double?

Пока с клавиатуры вводится 2.5, программа компилируется, но выдает кучу текста об ошибке, как я поняла, моя строка конвертируется в целое число, а как конвертировать в десятичные дроби в лекциях вроде нигде не было. Ну и второй вопрос — на целом числе условие выполнилось, но ни один пункт задачи не прошел валидацию, как так?

Дерево классов

Работа светофора для пешеходов запрограммирована следующим образом:
в начале каждого часа в течение трех минут горит зелёный сигнал,
затем в течение одной минуты — жёлтый ,
а потом в течение одной минуты — красный ,
затем опять зелёный горит три минуты и т. д.
Ввести с клавиатуры вещественное число t , означающее время в минутах, прошедшее с начала очередного часа.
Определить, сигнал какого цвета горит для пешеходов в этот момент.
Результат вывести на экран в следующем виде:
«зелёный» — если горит зелёный цвет,
«жёлтый» — если горит жёлтый цвет,
«красный» — если горит красный цвет.

Пример для числа 2.5 :
зелёный

Пример для числа 3 :
жёлтый

Пример для числа 4 :
красный

Пример для числа 5 :
зелёный

Требования:
Программа должна считывать вещественное число c клавиатуры.
Программа должна выводить текст на экран.
Если горит зелёный цвет, необходимо вывести текст: «зелёный»
Если горит жёлтый цвет, необходимо вывести текст: «жёлтый»
Если горит красный цвет, необходимо вывести текст: «красный»
Solution.java

  • Solution.java

Комментарии (3)

  • популярные
  • новые
  • старые

Для того, чтобы оставить комментарий Вы должны авторизоваться
Justinian Judge в Mega City One Master
16 июня 2019, 21:02

Integer.parseInt(s); превращаем в инт. Double.parseDouble(s) превращаем в double Также обрати внимание на эту строку в условиях: Ввести с клавиатуры вещественное число t, означающее время в минутах, прошедшее с начала очередного часа. то есть на вход может податься 38.989 или 41.4353.

16 июня 2019, 21:06

Окей, и как с ним быть? В лекциях этого не было, и видимо уже не будет. Валидатор не принимает пункты «выводить на экран», но ведь на экран как раз выводится. Не понимаю.

Justinian Judge в Mega City One Master
16 июня 2019, 21:32

Лекции это ориентир. Они никогда не покроют все, я рекомендую к нетривиальным/сложным/интересным задачам смотреть раздел Обсуждение задачи (после того как уже задача решена, чтобы не подсматривать готовое), также пролистывать комментарии к каждой лекции, включая лекции с задачами, там много и дополнительных ссылок дают на допматериалы, объясняют нюансы. Ну и гуглить, джава раш это практический курс, учеба очень сильно напоминает работу программиста, даже самые опытные с которых приходят на работу и получают такую же задачу, которую без понятия как решать, теорию по ней они не знают, и что делать? Гуглить, искать ответы, это то что программист делает минимум половину своего рабочего времени, процентов 40% гуглит, 40% читает чужой код, 20% от силы пишет свой. То что вещественные числа это double в лекциях было. Вводим в гугл double from string java, и сразу же ответ — даже открывать ссылки не нужно. Этот скилл жизненно необходим, его нужно развивать. Специфицика ИТ в том, что нельзя знать все, это невозможно. Работать с тем, что никому не известно, что не изучалось, это абсолютная норма и серые будни, к этому состоянию нужно просто привыкнуть. Как к воде. А фокусироваться на том, чтобы добыть результат. Программист это не человек который знает все, этот тот кто не боится не знать. А по задаче, у нас фактически пятиминутный цикл, какое бы мы число не ввели, если его разделить на 5, остаток будет нашим циклом от 0 к 5. Детальней: Оператор деления по модулю — Джава Раш то есть условно double d = Double.parseDouble(d); double time = d % 5; на выходе у нас будет число от 0 до 4.999 в периоде. И мы уже работаем согласно условиям

  • Курсы программирования
  • Регистрация
  • Курс Java
  • Помощь по задачам
  • Цены
  • Задачи-игры

Сообщество

JavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.

Преобразование (приведение)типов

Java объектно- ориентированный язык программирования, все что в java имеется представлено объектами. В java также имеются восемь примитивных типов, которые не являются объектами. Для этих типов существует соответствующие классы оболочки, предназначенные для создания объектов, преобразования итд, при работе с классами. Сейчас мы рассмотрим подробно преобразование и привидение типов.

(Integer, Double, Short, Byte,Long, Float, BigDecimal, BigInteger) Все эти классы имеют статические методы к примеру преобразования типа String к соответствующему типу.

Преобразовать String в int.

String str = «1» ;
int i = Integer . parseInt ( str ) ;

Преобразовать String в double.

Преобразование типа String в double
String str = «1» ;
double d = Double . parseDouble ( str ) ;

Преобразовать String в short.

Преобразовать String в short.
String str = «1» ;
short s = Short . parseShort ( str ) ;

Преобразовать String в byte.

Преобразовать String в Byte.
String str = «1» ;
byte b = Byte . parseByte ( str ) ;

Преобразовать String в long.

Преобразовать String в long.
String str = «1» ;
long l = Long . parseLong ( str ) ;

Преобразовать String в float.

Преобразовать String в int.
String str = «1» ;
float f = Float . parseFloat ( str ) ;

Преобразовать String и другие типы в char.

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

String str = «123» ;
char [ ] cs = str . toCharArray ( ) ; //пример с массивом
char c = str . charAt ( 0 ) ; //присваиваем переменной с символ 1

Не много отойдем от темы, если вы помните то в java строки можно было соединять(конкатенировать), используя оператор + листинг 1.1.

Пример объединения строк типа String
String a = «nookery» ;
String b = «.ru» ;

Однако, использование оператора « в конкатенации строк внутри java генерирует другой код в место a=a+b;листинг 1.2

Пример объединения строк типа String
String a = «nookery» ;
String b = «.ru» ;
a = new StringBuilder ( ) . append ( a ) . append ( b ) . toString ( ) ;

Но так было не всегда, использования оператора + в конкатенации строк стало возможным только с java 5.0

Теперь мы рассмотрим всевозможные приведения типа int в другие типы, в java

Преобразовать int в double.

Явного приведения int к double не имеет смысла, так как мы знаем, что диапазон чисел int в легкую вместится в double, достаточно использовать оператор присвоения ==.

Преобразовать int в short.

Преобразовать int в short.
short s = ( short ) i ;

Преобразовать int в byte.

Преобразовать int в Byte.
byte b = ( byte ) i ;

Преобразовать int в long.

Явного приведения int к long не имеет смысла, так как мы знаем, что диапазон чисел int в легкую вместится в long, достаточно использовать оператор присвоения ==.

Преобразовать int в float.

Явного приведения int к float как и в случаи double не имеет смысла, так как мы знаем, что диапазон чисел int в легкую вместится в float, достаточно использовать оператор присвоения ==.

Преобразовать int в String.

Преобразование типов в Java

Преобразование типов — это тема, которая может показаться сложной начинающим программировать на Java. Однако, заверим Вас, на самом деле всё просто. Главное понять по каким законам происходит взаимодействие между переменными и помнить об этом при написании программ. Итак, давайте разбираться.

В Java существует 2 типа преобразований — картинка Вам в помощь:

preobrazovaniya-v-java_vertex-academy

Напомним, что вся «Вселенная Java» состоит из:

  • примитивных типов (byte, short, int, long, char, float, double, boolean)
  • объектов

В данной статье мы:

  • рассмотрим преобразование типов для примитивных типов переменных
  • преобразование объектов (String, Scanner и др.) в этой статье не рассматривается, поскольку с объектами происходит отдельная «магия» — это тема для отдельной статьи.
Автоматическое преобразование

Ну, что ж, давайте попробуем разобраться что такое «автоматическое преобразование».

Помните, когда мы рассматривали типы переменных (в статье «Переменные в Java. Создание переменной»), мы говорили, что переменная — это некоторый «контейнер» , в котором может храниться значение для дальнейшего использования в программе. Также мы говорили о том, что каждый тип переменной имеет свой диапазон допустимых значений и объем занимаемой памяти. Вот она табличка, где это все было расписано:

variables-java_vertex-academy

Так вот, к чему мы, собственно говоря, клоним. К тому, что совсем не просто так Вам давались диапазоны допустимых значений и объем занимаемой памяти ��

Давайте, сравним, например:

1. byte и short. byte имеет меньший диапазон допустимых значений, чем short. То есть byte это как бы коробочка поменьше, а short — это коробочка побольше. И значит, мы можем byte вложить в short.

2. byte и int . byte имеет меньший диапазон допустимых значений, чем int. То есть byte это как бы коробочка поменьше, а int — это коробочка побольше. И значит, мы можем byte вложить в int.

3. int и long. int имеет меньший диапазон допустимых значений, чем long. То есть int это как бы коробочка поменьше, а long — это коробочка побольше. И значит, мы можем int вложить в long.

avtomaticheskoe-preobrazovanie_1_vertex-academy

Это и есть пример автоматического преобразования. Это можно схематически изобразить в виде вот такой картинки:

avtomaticheskoe-preobrazovanie-v-java_vertex-academy

Давайте рассмотрим как это работает на практике.

Пример №1

Код №1 — если Вы запустите это код на своем компьютере, в консоли будет выведено число 15

Преобразовать строку в двойную в Java

В этом руководстве мы рассмотрим множество способов преобразования строки в двойную в Java.

2. Двойной.parseDouble

Мы можем преобразовать строку в двойную , используя функцию Double. Метод parseDouble :

 assertEquals(1.23, Double.parseDouble("1.23"), 0.000001); 

3. Двойное.значениеOf

Точно так же мы можем преобразовать String в упакованный Double , используя метод Double.valueOf :

 assertEquals(1.23, Double.valueOf("1.23"), 0.000001); 

Обратите внимание, что возвращаемое значение Double.valueOf представляет собой упакованный Double . Начиная с Java 5, этот упакованный Double преобразуется компилятором в примитивный double , где это необходимо.

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

4. ДесятичныйФормат.parse

Когда строка , представляющая двойное число, имеет более сложный формат, мы можем использовать DecimalFormat .

Например, мы можем преобразовать десятичное значение валюты, не удаляя нечисловые символы:

 DecimalFormat format = new DecimalFormat("\u00A4#,##0.00");  format.setParseBigDecimal(true);    BigDecimal decimal = (BigDecimal) format.parse("-$1,000.57");    assertEquals(-1000.57, decimal.doubleValue(), 0.000001); 

Подобно Double.valueOf , метод DecimalFormat.parse возвращает число , которое мы можем преобразовать в примитивное значение типа double с помощью метода doubleValue . Кроме того, мы используем метод setParseBigDecimal , чтобы заставить DecimalFormat.parse вернуть BigDecimal .

Обычно DecimalFormat является более продвинутым, чем нам требуется, поэтому вместо этого мы должны отдавать предпочтение Double.parseDouble или Double.valueOf .

Чтобы узнать больше о DecimalFormat , ознакомьтесь с практическим руководством по DecimalFormat .

5. Недействительные преобразования

Java предоставляет единый интерфейс для обработки недопустимых числовых строк s.

Примечательно, что Double.parseDouble , Double.valueOf и DecimalFormat.parse генерируют исключение NullPointerException, когда мы передаем значение null.

Аналогично, Double.parseDouble и Double.valueOf генерируют исключение NumberFormatException, когда мы передаем недопустимую строку, которая не может быть проанализирована как двойная (например, & ).

Наконец, DecimalFormat.parse генерирует исключение ParseException , когда мы передаем недопустимую строку.

6. Избегайте устаревших конверсий

До Java 9 мы могли создать упакованный Double из String , создав экземпляр Double :

 new Double("1.23"); 

Начиная с версии 9, этот метод официально признан устаревшим в Java.

7. Заключение

В заключение, Java предоставляет нам несколько методов для преобразования String в значения типа double .

Как правило, мы рекомендуем использовать Double.parseDouble , если не требуется упакованный Double .

Исходный код этой статьи, включая примеры, можно найти на GitHub .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *