2014-12-05 4 views
-2

Я довольно новичок в Java, и я потратил несколько часов, пытаясь разобраться в этом домашнем задании, но я еще не понял этого. Это то, что есть:
Заполните следующие определения для перегруженного одноставочного статического метода money, который возвращает строку, представляющую ее аргумент, в виде суммы денег. Например,Методы перегрузки в Java (EMACS)

, если вход представляет собой двойной 2.5, тогда он возвращает строку «$ 2,50»;

если вход является int 6, тогда он возвращает строку «$ 6,00»; и

если входной сигнал является строкой «6.125», тогда он возвращает строку «$ 6.13».

В моем курсе используется EIMACS, который большинство студентов презирает, и это позволяет использовать некоторые простые сочетания во время кодирования, но часто более вредно, чем полезно. До сих пор я получил это:

public static String money(int n) 
{ 
    double a = Integer.parseInt(n); 
    return money(n); 
} 

public static String money(double d) 
{ 
    double b = Double.parseDouble(d); 
    return money(d); 
} 

public static String money(String s) 
{ 
    return money(s); 
} 

public static void main(String[] args) 
{ 
    System.out.println(money(2.5)); 
} 

Может кто-нибудь, пожалуйста, помогите мне выяснить, что я делаю неправильно? Спасибо!

+0

Какая у вас проблема? (Хотя есть очевидная проблема, я не собираюсь рассказывать. Это ваша обязанность четко задавать вопрос) –

+0

Все ваши методы называет себя, поэтому создавая бесконечный цикл - переосмысливая то, что вы хотите, чтобы эти методы возвращались. –

+0

Зачем вам нужно разбирать двойное значение, которое уже удваивается? То же самое касается Int. Когда вы компилируете программу, сообщение об ошибке должно быть объяснено самостоятельно. –

ответ

1

Если это весь код, проблема в том, что синтаксис неверен. Методы должны быть объявлены внутри класса. Проверьте учебник или лекционные заметки или посмотрите учебник Oracle Java.

Если это всего лишь фрагменты, проблема в том, что ваши методы ошибочны. Начнешь с первым:

public static String money(int n) { 
     double a = Integer.parseInt(n); 
     return money(n); 
    } 

На второй строке, вы звоните Integer.parseInt с int аргументом, но этот метод требует String аргумента. Это не скомпилируется. Кроме того, он не делает то, что вам нужно делать в этот момент. Метод Integer.parseInt преобразует String в int, но у вас нет строки для начала, и вам не нужно заканчивать int.

Затем на третьей линии, вы игнорировать значение a и рекурсивный вызов money(int) с исходным аргументом.

Предполагается, что этот метод должен создать строку , но ваш код этого не делает.


В задней видимости, эти рекурсивные вызовы могли быть порождены «короткими сокращениями» вы жалующимися. Если это так, лучше всего 1: удалить их и 2) думаю о том, что требует ваш запрос проблемы в этот момент. (Подсказка: форматирование ...)

+0

Спасибо за ваше объяснение, у меня грубая ночь, и я понял, что так не хватает ха-ха. Я получил это сейчас. – HitmarCurse

0
public static String money(int n) 
{ 
    n = n * 100; 
    double n1 = n/100; 
    String n2 = String.valueOf(n1); 
    return n2; 
} 

public static String money(double d) 
{ 
    d = Math.round(d*100); 
    d = d/100; 
    String d1 = String.valueOf(d); 
    return d1; 
} 

public static String money(String s) 
{ 
double s1 = Double.parseDouble(s); 
s1 = Math.round(s1*100); 
s1 = s1/100; 
String s2 = String.valueOf(s1); 
return s2; 
} 

public static void main(String[] args) 
{ 
    System.out.println(money(12.3456)); 
} 
Смежные вопросы