For input string ошибка перевод

1. Введение

Java выдает NumberFormatException — непроверенное исключение — когда не может преобразовать String в числовой тип.

Поскольку он не отмечен, Java не заставляет нас обрабатывать или объявлять его.

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

NumberFormatException вызывают различные проблемы . Например, некоторые конструкторы и методы в Java вызывают это исключение.

Мы обсудим большинство из них в следующих разделах.

2.1. Нечисловые данные, передаваемые в конструктор

Давайте посмотрим на попытку построить объект Integer или Double с нечисловыми данными.

Оба этих оператора вызовут исключение NumberFormatException :

Integer aIntegerObj = new Integer("one"); Double doubleDecimalObj = new Double("two.2");

Давайте посмотрим на трассировку стека, которую мы получили, когда передали недопустимый ввод «one» в конструктор Integer в строке 1:

Exception in thread "main" java.lang.NumberFormatException: For input string: "one" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:580) at java.lang.Integer.(Integer.java:867) at MainClass.main(MainClass.java:11)

Это вызвало исключение NumberFormatException . Конструктору Integer не удалось внутренне понять ввод с помощью parseInt () .

Java Number API не разбирает слова на числа, поэтому мы можем исправить код, просто изменив его на ожидаемое значение:

Integer aIntegerObj = new Integer("1"); Double doubleDecimalObj = new Double("2.2");

2.2. Анализ строк, содержащих нечисловые данные

Подобно поддержке синтаксического анализа в конструкторе Java, у нас есть специальные методы синтаксического анализа, такие как par seInt (), parseDouble (), valueOf () и decode () .

Если мы попробуем сделать такие же преобразования с помощью этих:

int aIntPrim = Integer.parseInt("two"); double aDoublePrim = Double.parseDouble("two.two"); Integer aIntObj = Integer.valueOf("three"); Long decodedLong = Long.decode("64403L");

Тогда мы увидим такое же ошибочное поведение.

И мы можем исправить их аналогичным образом:

int aIntPrim = Integer.parseInt("2"); double aDoublePrim = Double.parseDouble("2.2"); Integer aIntObj = Integer.valueOf("3"); Long decodedLong = Long.decode("64403");

2.3. Передача строк с посторонними символами

Или, если мы попытаемся преобразовать строку в число с посторонними данными на входе, такими как пробелы или специальные символы:

Short shortInt = new Short("2 "); int bIntPrim = Integer.parseInt("_6000");

Тогда у нас будет та же проблема, что и раньше.

Мы можем исправить это с помощью небольших манипуляций со строками:

Short shortInt = new Short("2 ".trim()); int bIntPrim = Integer.parseInt("_6000".replaceAll("_", "")); int bIntPrim = Integer.parseInt("-6000");

Обратите внимание, что здесь, в строке 3, разрешены отрицательные числа с использованием символа дефиса как знака минус.

2.4. Форматы номеров для конкретных регионов

Давайте посмотрим на особый случай номеров, зависящих от локали. В европейских регионах запятая может представлять десятичный знак. Например, «4000,1» может представлять десятичное число «4000,1».

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

double aDoublePrim = Double.parseDouble("4000,1");

Нам нужно разрешить использование запятых и избежать исключения в этом случае. Чтобы это стало возможным, Java должна понимать запятую здесь как десятичную дробь.

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

Давайте посмотрим на это в действии на примере Locale для Франции:

NumberFormat numberFormat = NumberFormat.getInstance(Locale.FRANCE); Number parsedNumber = numberFormat.parse("4000,1"); assertEquals(4000.1, parsedNumber.doubleValue()); assertEquals(4000, parsedNumber.intValue()); 

3. Передовой опыт

Давайте поговорим о нескольких хороших практиках, которые могут помочь нам справиться с NumberFormatException :

  1. Не пытайтесь преобразовывать буквенные или специальные символы в числа — API чисел Java не может этого сделать.
  2. Возможно, мы захотим проверить входную строку с помощью регулярных выражений и выбросить исключение для недопустимых символов .
  3. Мы можем очистить ввод от предсказуемых известных проблем с помощью таких методов, как trim () и replaceAll () .
  4. В некоторых случаях вводимые специальные символы могут быть допустимыми. Для этого мы выполняем специальную обработку, например, используя NumberFormat , который поддерживает множество форматов.

4. Вывод

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

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

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

Как обычно, исходный код, используемый в примерах, можно найти на GitHub.

При работе в банке-клиенте «Банк Россия» возникает ошибка:

For input string:»».

 Возможное решение:

1) Заходим в профиль текущего пользователя. Набираем в адресной строке проводника «%userprofile%» без кавычек.

2) Находим и удаляем файл «.iBank2».

 3) Проверяем результат.

glebasik0

0 / 0 / 0

Регистрация: 10.04.2017

Сообщений: 8

1

03.11.2017, 05:41. Показов 15682. Ответов 2

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Считываю из файла строку: asdasdasd112 sada 1 123dfdsd
Выбрал только цифры, получилось так: 112 1 123
Пытаюсь убрать лишние пробелы, а у меня выдаёт эту ошибку: java.lang.NumberFormatException: For input string: «»
Ошибка возникает в этой части кода:

Java
1
2
3
4
5
6
7
8
9
10
11
12
            int s = 0;
            int j = 0;
            List<String> ListChisel = new ArrayList<String>();
            ListChisel = Arrays.asList(massPosled2);
            for (int i = 0; i < ListChisel.size(); i++) {
                if (Character.isSpaceChar(Integer.parseInt(ListChisel.get(i)))){
                    ListChisel.remove(i);
                    j++;
                } else{
                    s++;
                }
            }

Но на всякий случай вот весь код:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package com.company;
 
import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
 
public class Main {
 
    public static void main(String args[]) throws IOException {
        FileInputStream fileIn = null;
 
        try {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            File f = new File("in.txt");
            BufferedReader fin = new BufferedReader(new FileReader(f));
            String line = fin.readLine();
            System.out.println(line);
 
            String num = "";
 
            char[] c = line.toCharArray();
            System.out.println(c);
            for (int i = 0; i < c.length; i++){
                if(Character.isDigit(c[i])||c[i]==' '){
                    num+=c[i];
                }else {
 
                }
            }
 
            String chisla = num.toString();
            String massPosled[] = chisla.split(" ");
            String massPosled2[] = new String[massPosled.length];
            for (int i = 0; i < massPosled.length; i++) {
                if (massPosled[i] == "") {
 
                } else {
                    massPosled2[i] = massPosled[i];
                    System.out.println(massPosled2[i]);
                }
            }
 
            int s = 0;
            int j = 0;
            List<String> ListChisel = new ArrayList<String>();
            ListChisel = Arrays.asList(massPosled2);
            for (int i = 0; i < ListChisel.size(); i++) {
                if (Character.isSpaceChar(Integer.parseInt(ListChisel.get(i)))){
                    ListChisel.remove(i);
                    j++;
                } else{
                    s++;
                }
            }
 
 
        }finally {
            if (fileIn != null) {
                fileIn.close();
            }
        }
    }
}



0



al1as

386 / 74 / 31

Регистрация: 13.04.2012

Сообщений: 127

03.11.2017, 07:00

2

Я бы вообще весь ваш код с заполнением листа после 17 строки заменил на:

Java
1
2
3
4
5
6
Matcher matcher = Pattern.compile(".*?(\d+)").matcher(line);
            
List<String> ListChisel = new ArrayList<>();
while (matcher.find()) {
    ListChisel.add(matcher.group(1));
}

А у вас ошибка в 36 строке: строки нужно сравнивать через equals. После этого у вас в массиве на месте пустого символа окажется элемент null. Избавиться от него при создании листа можно такой строкой

Java
1
List<String> ListChisel = Arrays.stream(massPosled2).filter(Objects::nonNull).collect(Collectors.toList());

Либо вручную создавать лист и при добавлении элементов проверять на null (но не использовать Arrays.asList(), т.к. он создает лист фиксированного размера, и удалить из него ничего не выйдет).

Добавлено через 9 минут
Если будете пробовать мой вариант, не забудьте добавить импорты:

Java
1
2
import java.util.regex.Matcher;
import java.util.regex.Pattern;



0



746 / 493 / 285

Регистрация: 10.09.2015

Сообщений: 1,530

03.11.2017, 12:58

3

(Character.isSpaceChar(Integer.parseInt(ListChisel.get(i)) — ты пытаешься пробел перевести в число, вот тебе и ошибка



0



1. Введение

Java выдает NumberFormatException — непроверенное исключение — когда не может преобразовать String в числовой тип.

Поскольку он не отмечен, Java не заставляет нас обрабатывать или объявлять его.

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

NumberFormatException вызывают различные проблемы . Например, некоторые конструкторы и методы в Java вызывают это исключение.

Мы обсудим большинство из них в следующих разделах.

2.1. Нечисловые данные, передаваемые в конструктор

Давайте посмотрим на попытку построить объект Integer или Double с нечисловыми данными.

Оба этих оператора вызовут исключение NumberFormatException :

Integer aIntegerObj = new Integer("one"); Double doubleDecimalObj = new Double("two.2");

Давайте посмотрим на трассировку стека, которую мы получили, когда передали недопустимый ввод «one» в конструктор Integer в строке 1:

Exception in thread "main" java.lang.NumberFormatException: For input string: "one" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:580) at java.lang.Integer.(Integer.java:867) at MainClass.main(MainClass.java:11)

Это вызвало исключение NumberFormatException . Конструктору Integer не удалось внутренне понять ввод с помощью parseInt () .

Java Number API не разбирает слова на числа, поэтому мы можем исправить код, просто изменив его на ожидаемое значение:

Integer aIntegerObj = new Integer("1"); Double doubleDecimalObj = new Double("2.2");

2.2. Анализ строк, содержащих нечисловые данные

Подобно поддержке синтаксического анализа в конструкторе Java, у нас есть специальные методы синтаксического анализа, такие как par seInt (), parseDouble (), valueOf () и decode () .

Если мы попробуем сделать такие же преобразования с помощью этих:

int aIntPrim = Integer.parseInt("two"); double aDoublePrim = Double.parseDouble("two.two"); Integer aIntObj = Integer.valueOf("three"); Long decodedLong = Long.decode("64403L");

Тогда мы увидим такое же ошибочное поведение.

И мы можем исправить их аналогичным образом:

int aIntPrim = Integer.parseInt("2"); double aDoublePrim = Double.parseDouble("2.2"); Integer aIntObj = Integer.valueOf("3"); Long decodedLong = Long.decode("64403");

2.3. Передача строк с посторонними символами

Или, если мы попытаемся преобразовать строку в число с посторонними данными на входе, такими как пробелы или специальные символы:

Short shortInt = new Short("2 "); int bIntPrim = Integer.parseInt("_6000");

Тогда у нас будет та же проблема, что и раньше.

Мы можем исправить это с помощью небольших манипуляций со строками:

Short shortInt = new Short("2 ".trim()); int bIntPrim = Integer.parseInt("_6000".replaceAll("_", "")); int bIntPrim = Integer.parseInt("-6000");

Обратите внимание, что здесь, в строке 3, разрешены отрицательные числа с использованием символа дефиса как знака минус.

2.4. Форматы номеров для конкретных регионов

Давайте посмотрим на особый случай номеров, зависящих от локали. В европейских регионах запятая может представлять десятичный знак. Например, «4000,1» может представлять десятичное число «4000,1».

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

double aDoublePrim = Double.parseDouble("4000,1");

Нам нужно разрешить использование запятых и избежать исключения в этом случае. Чтобы это стало возможным, Java должна понимать запятую здесь как десятичную дробь.

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

Давайте посмотрим на это в действии на примере Locale для Франции:

NumberFormat numberFormat = NumberFormat.getInstance(Locale.FRANCE); Number parsedNumber = numberFormat.parse("4000,1"); assertEquals(4000.1, parsedNumber.doubleValue()); assertEquals(4000, parsedNumber.intValue()); 

3. Передовой опыт

Давайте поговорим о нескольких хороших практиках, которые могут помочь нам справиться с NumberFormatException :

  1. Не пытайтесь преобразовывать буквенные или специальные символы в числа — API чисел Java не может этого сделать.
  2. Возможно, мы захотим проверить входную строку с помощью регулярных выражений и выбросить исключение для недопустимых символов .
  3. Мы можем очистить ввод от предсказуемых известных проблем с помощью таких методов, как trim () и replaceAll () .
  4. В некоторых случаях вводимые специальные символы могут быть допустимыми. Для этого мы выполняем специальную обработку, например, используя NumberFormat , который поддерживает множество форматов.

4. Вывод

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

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

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

Как обычно, исходный код, используемый в примерах, можно найти на GitHub.


На чтение 5 мин. Просмотров 27 Опубликовано 15.12.2019

String metric — String metrics (also known as similarity metrics) are a >Wikipedia

String ribbon — solar cells is proprietary technology developed by Evergreen Solar. Technology descriptionString Ribbon describes a method of producing high grade silicon wafers suitable for the photovoltaics industry. The name describes the manufacturing… … Wikipedia

String literal — A string literal is the representation of a string value within the source code of a computer program. There are numerous alternate notations for specifying string literals, and the exact notation depends on the indiv >Wikipedia

String exploits — Several implementation / design flaws are associated with string programming, some of those are associated with security exploits. Concatenation problems It is possible to cause String1 + User Input String + String2 to behave in unepected ways by … Wikipedia

String (computer science) — In formal languages, which are used in mathematical logic and theoretical computer science, a string is a finite sequence of symbols that are chosen from a set or alphabet. In computer programming, a string is traditionally a sequence of… … Wikipedia

Input mask — In computer programming, an input mask often refers to a string expression that a developer defines, which governs what is allowed to be entered into a typical edit box. It can be sa >Wikipedia

String+Alt+Delete — Die Standard Tastenkombination „Strg Alt Entf“ ist nur mit zwei Händen zu erreichen, allerdings hat die einhändig erreichbare AltGr+Strg (rechts)+Entf Kombination dieselbe Wirkung. Benutzer von Personal Computern und anderen Rechnersystemen… … Deutsch Wikipedia

String+Alt+Entfernen — Die Standard Tastenkombination „Strg Alt Entf“ ist nur mit zwei Händen zu erreichen, allerdings hat die einhändig erreichbare AltGr+Strg (rechts)+Entf Kombination dieselbe Wirkung. Benutzer von Personal Computern und anderen Rechnersystemen… … Deutsch Wikipedia

Closest string — In theoretical computer science, closest string is the name of an NP hard computational problem, which tries to find the geometrical center of a set of input strings. To understand the word center it is necessary to define a distance between two… … Wikipedia

Aho–Corasick string matching algorithm — The Aho–Corasick string matching algorithm is a string searching algorithm invented by Alfred V. Aho and Margaret J. Corasick. It is a kind of dictionary matching algorithm that locates elements of a finite set of strings (the dictionary ) within … Wikipedia

C file input/output — C Standard Library Data types Character >Wikipedia

String metric — String metrics (also known as similarity metrics) are a >Wikipedia

String literal — A string literal is the representation of a string value within the source code of a computer program. There are numerous alternate notations for specifying string literals, and the exact notation depends on the indiv >Wikipedia

String (computer science) — In formal languages, which are used in mathematical logic and theoretical computer science, a string is a finite sequence of symbols that are chosen from a set or alphabet. In computer programming, a string is traditionally a sequence of… … Wikipedia

String ribbon — solar cells is proprietary technology developed by Evergreen Solar. Technology descriptionString Ribbon describes a method of producing high grade silicon wafers suitable for the photovoltaics industry. The name describes the manufacturing… … Wikipedia

String exploits — Several implementation / design flaws are associated with string programming, some of those are associated with security exploits. Concatenation problems It is possible to cause String1 + User Input String + String2 to behave in unepected ways by … Wikipedia

Input mask — In computer programming, an input mask often refers to a string expression that a developer defines, which governs what is allowed to be entered into a typical edit box. It can be sa >Wikipedia

C file input/output — C Standard Library Data types Character >Wikipedia

Magic string — A magic string is an input that a programmer believes will never come externally and which activates otherwise h >Wikipedia

Closest string — In theoretical computer science, closest string is the name of an NP hard computational problem, which tries to find the geometrical center of a set of input strings. To understand the word center it is necessary to define a distance between two… … Wikipedia

Aho–Corasick string matching algorithm — The Aho–Corasick string matching algorithm is a string searching algorithm invented by Alfred V. Aho and Margaret J. Corasick. It is a kind of dictionary matching algorithm that locates elements of a finite set of strings (the dictionary ) within … Wikipedia

printf format string — An example of the printf function. Printf format string (which stands for print formatted ) refers to a control parameter used by a >Wikipedia

Перевод по словам

adjective: входной, вводимый, подводимый, поглощенный

noun: ввод, ввод данных, входные данные, потребление, исходные данные, поглощение, вводное устройство, предоставление данных, предоставление сведений

  • input range — входной диапазон
  • input terminal — входная клемма
  • input connector — входной разъем
  • mnemonic input — устройство ввода с мнемоническими обозначениями команд на клавишах
  • screening of input leads — экранирование входных проводников
  • analogue input expander — расширение аналогового входа
  • input impedance — входной импеданс
  • input signal amplitude — амплитуда входного сигнала
  • input power — входная мощность
  • input pattern — входной образ

noun: строка, струна, шнурок, ряд, нитка, вереница, веревка, тетива, бечевка, завязка

verb: нанизывать, натягивать, обманывать, натягивать тетиву, вешать, завязывать, привязывать, шнуровать, водить за нос

Понравилась статья? Поделить с друзьями:
  • For i in range python ошибка
  • For honor произошла ошибка невозможно запустить игру 05020000
  • For honor ошибка присоединения к сессии 0004000029
  • For honor ошибка при подключении к серверу
  • For honor ошибка подключения к сессии