Не могли бы вы объяснить мне следующий код на Java. Я получаю - Исключение в thread & ldquo; main & rdquo; java.lang.StackOverflowError [дубликат]

Эта функция совместима для чисел с точками или запятыми как десятичные числа

  function floatvalue ($ val) {$ val = str_replace (",", ".", $ val);  $ val = preg_replace ('/\.(?=.*\.)/', '', $ val);  return floatval ($ val);  } $ number = "1.325.125,54";  echo floatvalue ($ number);  // Выход 1325125.54 $ number = "1,325,125.54";  echo floatvalue ($ number);  // Выход 1325125.54  
0
задан Hovercraft Full Of Eels 24 August 2013 в 19:44
поделиться

2 ответа

Обычно класс используется для группировки данных вместе с функциональными возможностями. Похоже, что класс Name является просто оболочкой для String без добавления каких-либо функций. На этом этапе вашей карьеры Java, вероятно, лучше объявить String name; в классе Employee и удалить класс Name все вместе. (Обратите внимание, что это приведет к удалению ошибки из вашего кода, описанного в Hovercraft Full of Eels.)

2
ответ дан Code-Apprentice 15 August 2018 в 17:30
поделиться

Самая распространенная причина StackoverflowExceptions заключается в том, чтобы неосознанно иметь рекурсию, и это происходит здесь? ...

public Name(String name)
{
    Name employeeName = new Name(name);  // **** YIKES!! ***
    this.name = employeeName;
}

Bingo: recursion!

Этот конструктор создаст новый объект Name, конструктор которого создаст новый объект Name, конструктор которого будет ... и таким образом вы будете продолжайте создавать новые объекты Name до бесконечности или пока не закончится память стека. Решение: не делайте этого. Назначить имя для строки:

class Name {
    String name; // ***** String field!

    public Name(String name)
    {
        this.name = name;  // this.name is a String field
    }
7
ответ дан Hovercraft Full Of Eels 15 August 2018 в 17:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: