2014-12-05 8 views
-2

저는 Java에 익숙하지 않아 숙제 문제를 파악하는 데 몇 시간을 보냈지만 아직 해결하지 못했습니다. 다음과 같습니다.
인수를 금액으로 나타내는 String을 반환하는 오버로드 된 단일 인수 정적 메서드 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

왜 여전히 double 값인 double 값을 파싱해야합니까? Int와 동일합니다. 프로그램을 컴파일 할 때 오류 메시지는 자체 설명해야합니다. –

답변

1

전체 코드의 경우 문제는 구문이 잘못되었다는 것입니다. 메소드는 클래스 내에서 선언되어야합니다. 교과서 나 강의 노트를 확인하거나 Oracle Java 튜토리얼을보십시오.

단지 조각이라면 문제는 방법이 잘못되었다는 것입니다. 첫 번째로 시작하자 :

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

을 두 번째 줄에, 당신은 int 인수와 함께있는 Integer.parseInt 부르지 만, 그 방법은 String 인수가 필요합니다. 그건 컴파일되지 않습니다. 또한, 그것은 당신이 그 시점에서해야 할 일을하지 않습니다. Integer.parseInt 메서드는 Stringint으로 변환하지만 처음에는 문자열이 없으므로 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)); 
}