private char whatThing() {
double random = Math.random();
String f = String.format("%.2f", random);
double formattedRandom = Double.parseDouble(f);
if(formattedRandom < 0.33) {
return 'R';
} else if(formattedRandom >= 0.33 && formattedRandom < 0.66) {
return 'P';
} else {
return 'S';
}
}
Выводит ошибку NumberFormatException:
Exception in thread «main» java.lang.NumberFormatException: For input string:
«0,47»
at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
at sun.misc.FloatingDecimal.parseDouble(Unknown Source)
at java.lang.Double.parseDouble(Unknown Source)
at RPSEngine.whatThing(RPSEngine.java:28)
at RPSEngine.(RPSEngine.java:8)
at RPSSheath.(RPSSheath.java:30)
at RPSSheath.main(RPSSheath.java:43)
задан 10 июл 2017 в 10:18
Viler VilerViler Viler
1911 золотой знак1 серебряный знак11 бронзовых знаков
1
Чтобы получить число с точностью до двух цифр после запятой, нужно указать следующее выражение:
%1$,.2f
Таким образом код будет выглядеть так:
double number = Math.random();
String str = String.format("%1$,.2f", number);
System.out.println(number);
System.out.println(str);
0.3086820994984767
0.31
ответ дан 10 июл 2017 в 10:27
Artem KonovalovArtem Konovalov
14.9k1 золотой знак21 серебряный знак39 бронзовых знаков
1
Вот такой вариант делает тоже самое, но проще
private char whatThing() {
final Random random = new Random();
int choice = random.nextInt(2);
switch (choice) {
case 0:
return 'R';
case 1:
return 'P';
default:
return 'S';
}
}
ответ дан 10 июл 2017 в 11:47
Mikhail VaysmanMikhail Vaysman
14.2k1 золотой знак20 серебряных знаков31 бронзовый знак
Xenvert 1 / 1 / 0 Регистрация: 29.11.2013 Сообщений: 40 |
||||
1 |
||||
02.02.2014, 23:22. Показов 4100. Ответов 19 Метки нет (Все метки)
При попытке конвертировать string в int выводятся неправильные значения.
В чем ошибка?
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
02.02.2014, 23:22 |
Ответы с готовыми решениями: Не преобразовывает int в string (строку) for (int i = 100000; i < 999999; ++i) Создайте класс Animal. Добавьте поля string Name, string Kind, string Areal, int Population По C# есть задачка, с которой я так и не разобрался Задача: Создайте… Создайте класс Animal. Добавьте поля string Name, string Kind, string Areal, int Population Ошибки: Cannot implicitly convert type ‘string’ to ‘int’ и Argument 1: cannot convert from ‘int’ to ‘string’ Пытаюсь написать парсер. 19 |
Заблокирован |
||||
02.02.2014, 23:42 |
2 |
|||
49 50 51 — это коды символов «1» «2» «3», а s[i] — это символ а не строка
1 |
pokerface 209 / 174 / 48 Регистрация: 20.09.2012 Сообщений: 481 |
||||
03.02.2014, 01:02 |
3 |
|||
1 |
SKonst 37 / 25 / 15 Регистрация: 14.12.2013 Сообщений: 67 |
||||
03.02.2014, 02:52 |
4 |
|||
Xenvert,
1 |
Michael____ 1 / 1 / 0 Регистрация: 29.01.2014 Сообщений: 27 |
||||
03.02.2014, 11:10 |
5 |
|||
Вот всё работает.
1 |
45 / 45 / 4 Регистрация: 14.02.2013 Сообщений: 139 |
|
03.02.2014, 12:52 |
6 |
Вместо Convert используйте int.Parse(s[i].ToString());
1 |
209 / 174 / 48 Регистрация: 20.09.2012 Сообщений: 481 |
|
03.02.2014, 14:28 |
7 |
IntArray[i] = Console.ReadLine(s[i]);
1 |
Администратор 9393 / 4677 / 757 Регистрация: 17.04.2012 Сообщений: 9,520 Записей в блоге: 14 |
|
03.02.2014, 14:34 |
8 |
Вместо Convert используйте int.Parse(s[i].ToString()); А в чём преимущество?
1 |
37 / 25 / 15 Регистрация: 14.12.2013 Сообщений: 67 |
|
03.02.2014, 16:02 |
9 |
-HPR-, извиняюсь, действительно сильно тупанул)
2 |
209 / 174 / 48 Регистрация: 20.09.2012 Сообщений: 481 |
|
03.02.2014, 16:16 |
10 |
В этой ситуации просто надо s[i] перевести в string, а затем в int любым из возможных способов. Добавлено через 3 минуты
string s = Console.ReadLine(); работает, потому что s — это стринг. А в примере ТС s[i], а значит char. Если присвоить инту чар, то мы получаем номер символа в таблице Юникода.
2 |
45 / 45 / 4 Регистрация: 14.02.2013 Сообщений: 139 |
|
03.02.2014, 19:22 |
11 |
Решение
А в чём преимущество? Для начинающего — это не перепутать в параметрах строку и символ
3 |
Psilon Master of Orion 6095 / 4951 / 905 Регистрация: 10.07.2011 Сообщений: 14,522 Записей в блоге: 5 |
||||
04.02.2014, 01:36 |
12 |
|||
makedonsky94, ну а чтобы совсем запутать:
2 |
pokerface 209 / 174 / 48 Регистрация: 20.09.2012 Сообщений: 481 |
||||||||
04.02.2014, 01:56 |
13 |
|||||||
Ещё одна модификация=)
Добавлено через 6 минут
1 |
1 / 1 / 0 Регистрация: 29.11.2013 Сообщений: 40 |
|
04.02.2014, 16:33 [ТС] |
14 |
Спасибо всем)
1 |
17227 / 12679 / 3323 Регистрация: 17.09.2011 Сообщений: 20,950 |
|
04.02.2014, 16:56 |
15 |
Есть же метод char.GetNumericValue, зачем строки почем зря плодить?
0 |
pokerface 209 / 174 / 48 Регистрация: 20.09.2012 Сообщений: 481 |
||||
04.02.2014, 17:04 |
16 |
|||
Есть же метод char.GetNumericValue, зачем строки почем зря плодить? Не вижу разницы
0 |
17227 / 12679 / 3323 Регистрация: 17.09.2011 Сообщений: 20,950 |
|
04.02.2014, 17:23 |
17 |
Не вижу разницы Лишние строки длиной в один символ в куче не будут плодиться. Ну, это если не считать правильного преобразования символов, которые представляют собой числа, но не в промежутке 0-9. В данном случае это не играет роли.
1 |
Psilon Master of Orion 6095 / 4951 / 905 Регистрация: 10.07.2011 Сообщений: 14,522 Записей в блоге: 5 |
||||
04.02.2014, 18:40 |
18 |
|||
kolorotur, не люблю этот метод, потому что с ним запись слишком длинная
может так и правильнее, но слишком уж нелепо, да еще и с кастом в double и обратно.
0 |
kolorotur 17227 / 12679 / 3323 Регистрация: 17.09.2011 Сообщений: 20,950 |
||||||||
04.02.2014, 19:17 |
19 |
|||||||
Psilon, ну так эстетам шарп предоставляет шикарную возможность присыпать вызов сахарком
1 |
Master of Orion 6095 / 4951 / 905 Регистрация: 10.07.2011 Сообщений: 14,522 Записей в блоге: 5 |
|
04.02.2014, 23:06 |
20 |
kolorotur, только таскать постоянно по проектам замучаешься
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
04.02.2014, 23:06 |
Помогаю со студенческими работами здесь Dictionary<Tuple<string,string>, Dictionary<int,int>> dict — возможно ли?
Dictionary<int, string> pos = new Dictionary<int, string>;
public KeyValuePair<string, int> MyMethod(Dictionary<string, int> dic,… Неправильно работает string.compare() Столкнулся с проблемой — не могу решить. Есть отсортированный… Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 20 |
Проблемы
При попытке отформатировать ячейку как число в Microsoft Excel она будет преобразована в текстовый формат.
Причина
Эта проблема возникает, если выполняются указанные ниже условия.
-
В диалоговом окне Формат ячеек Вы форматируете ячейку как текст.
-
Затем введите число в эту ячейку.
-
В диалоговом окне Формат ячеек можно отформатировать ячейку как число.
Ячейка останется в текстовом формате.
Обходное решение
Чтобы преобразовать в числа ячейки, которые отформатированы как текст, выполните указанные ниже действия.
-
Выделите ячейку, отформатированную как текст, который нужно преобразовать в число. Обратите внимание на то, что при выборе ячейки или наведении указателя мыши на ячейку появляется кнопка Параметры проверки ошибок . Ячейка должна содержать индикатор ошибки в левом верхнем углу ячейки.Примечание. Если кнопка Параметры проверки ошибок не отображается или индикатор ошибки не отображается, включите фоновую проверку ошибок. Для этого в Microsoft Excel 2002 или Microsoft Office Excel 2003 выполните указанные ниже действия.
-
В меню Сервис выберите пункт Параметры.
-
В диалоговом окне Параметры откройте вкладку Проверка ошибок .
-
В разделе » Параметры » установите флажок Включить фоновый поиск ошибок .
-
В разделе правила убедитесь, что выбран параметр число сохранено как текстовое правило, и нажмите кнопку ОК.
Чтобы сделать это в Microsoft Office Excel 2007, выполните указанные ниже действия.
-
Нажмите кнопку Microsoft Office, затем нажмите кнопку Параметры Excel.
-
На вкладке формулы установите флажок Включить фоновый поиск ошибок в разделе » Проверка ошибок».
-
В разделе правила проверки ошибокубедитесь, что установлен флажок числа в текстовом формате или предшествует apostrphe , и нажмите кнопку ОК.
-
-
Нажмите стрелку вниз рядом с кнопкой Параметры проверки ошибок . Обратите внимание, что отображается меню число, сохраненное в виде текста .
-
Нажмите кнопку преобразовать в число.
Обратите внимание, что ячейка преобразуется в числовой формат, а индикатор ошибки больше не отображается в ячейке.
Нужна дополнительная помощь?
Нужны дополнительные параметры?
Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.
В сообществах можно задавать вопросы и отвечать на них, отправлять отзывы и консультироваться с экспертами разных профилей.
I had the same sort of need and found this to work well for me (postgres 8.4):
CAST((COALESCE(myfield,'0')) AS INTEGER)
Some test cases to demonstrate:
db=> select CAST((COALESCE(NULL,'0')) AS INTEGER);
int4
------
0
(1 row)
db=> select CAST((COALESCE('','0')) AS INTEGER);
int4
------
0
(1 row)
db=> select CAST((COALESCE('4','0')) AS INTEGER);
int4
------
4
(1 row)
db=> select CAST((COALESCE('bad','0')) AS INTEGER);
ERROR: invalid input syntax for integer: "bad"
If you need to handle the possibility of the field having non-numeric text (such as «100bad») you can use regexp_replace to strip non-numeric characters before the cast.
CAST(REGEXP_REPLACE(COALESCE(myfield,'0'), '[^0-9]+', '', 'g') AS INTEGER)
Then text/varchar values like «b3ad5» will also give numbers
db=> select CAST(REGEXP_REPLACE(COALESCE('b3ad5','0'), '[^0-9]+', '', 'g') AS INTEGER);
regexp_replace
----------------
35
(1 row)
To address Chris Cogdon’s concern with the solution not giving 0 for all cases, including a case such as «bad» (no digit characters at all), I made this adjusted statement:
CAST((COALESCE(NULLIF(REGEXP_REPLACE(myfield, '[^0-9]+', '', 'g'), ''), '0')) AS INTEGER);
It works similar to the simpler solutions, except will give 0 when the value to convert is non-digit characters only, such as «bad»:
db=> select CAST((COALESCE(NULLIF(REGEXP_REPLACE('no longer bad!', '[^0-9]+', '', 'g'), ''), '0')) AS INTEGER);
coalesce
----------
0
(1 row)
Страница 1 из 2
-
Кто нибудь сталкивался с такой проблемой? Попытка явного перевода из строки в число (int number = int(«21»)) выдаёт ошибку (error: invalid cast from type ‘String’ to type ‘int’), а со строками не очень удобно работать.
-
Естественно выдает ошибку. Нет в С/C++ такого приведения типов. Используйте atoi() или sscanf().
-
atoi() — это круть, но просит на вход const char*, а я могу максимум char сделать(
Где здесь копать?
Хотя тут char используют… -
Там в примере массив символов.
А char [] и char * это, можно сказать, одно и то же. -
Может в коде ошибка?
someint = atoi(strToChar(valvePin);
char strToChar(String str){
int ln = str.length();
char rez[ln];
for(int i = 0; i < ln; i++){
rez[i] = char(str[i]);
}
return rez;
}atoi ругается на то, что это не CONST CHAR…
-
Так нельзя делать. Сейчас напишу…
const int n = 10;
char *z = new char[n];
String s = «12345»;
s.toCharArray(z,n);
int x = atoi(z);
// …
delete[] z;
-
Ага, все дело в указателях.
-
Используйте пока статический массив. Только тогда приведение типов к (char *) руками сделайте.
-
Вроде работает. Я создал массив (статический) так, что бы с запасом было, а функции toCharArray передаю нужное кол-во символов.
-
И в 0.22 и в 1.0 среде ардуино есть метод long toInt() у String.
-
Каюсь, проглядел. Вот знал же, что оно там должно быть! Полез вместо справочника правду искать прямо в исходники и самое главное пропустил.
-
вопрос был как String перевести в char а отвечают все на вопрос как char перевести в int
-
String str = «abs»;
uint8_t ln = str.length();
uint8_t input[ln] ;
for(uint8_t i = 0; i < ln; i++ ){
input[i] = str.charAt(i);
}Как-то так…
-
ошибся как string перевести в int
если string это число скажем 140815 -
Спасибо за тренировку.
String str = «140815»;
int digits = str.toInt(); -
А в int поместится 140815? ))
-
long — если Вам мало int
хотя https://toster.ru/q/79764 это может что прояснит -
Наш int 2 байта. 4 это у DUE и далее.
Страница 1 из 2