2015-01-12 3 views
-2

클래스 변환이 처음입니다. 방법을 사용하여 한 변수에서 다른 변수로 변환하려고합니다. 현재 double을 int로 변환 한 다음 반올림하는 방법과 booleanint으로 변환하는 방법은 잘 모르겠습니다. 0 = false1 = true입니다. 누구든지 도와 줄 수 있습니까?변환 클래스가 작동하지 않습니다.

내 코드 : 이중 방법

public class MethodsOverloading { 

    public int convert (String s) { 
     System.out.println("This is a string "+ s); // Hoping to display 100 as a string 
     return 0; 
    } 

    public int convert(double d) { 
     System.out.println("This is an int "+ d); // Want to display 99.6 rounded to 100 (so its an int) 
     return 0; 
    } 

    public int convert (boolean b) { 
     System.out.println("This is an int "+(b)); // hoping to return as an int with 0 = false and 1 = true 
     return 0; 
    } 

    public static void main(String[] args) { 
     MethodsOverloading overload = new MethodsOverloading(); 
     overload.convert("100"); 
     overload.convert(99.6); 
     overload.convert(true); 
    } 
} 
+5

왜 당신이 당신의 모든 메소드에 0을 반환하는? – Maroun

답변

1

사용

System.out.println("This is an int "+ Math.round(d/100.0)*100); // Want to display 99.6 rounded to 100 (so its an int) 

하고 INT 방법에 대한

System.out.println("This is an int "+(b?1:0)); // hoping to return as an int with 0 = false and 1 = true 

.

+0

'Math.round'를 사용하지 마십시오. 이것은'int'보다는'long'을 리턴합니다. –

+0

분명히 OP는 학습 단계에 있습니다. 삼자 표현을 가르치거나 설명하는 것은 권장되지 않습니다. 'if/else'를 사용하는 것이 더 낫습니다. –

1

부울 : 다음 줄에

if (trueExpression){ return 1;} 
else { return 0;} 

, 당신은 자신을 모순 :

System.out.println("This is an int "+ d); // Want to display 99.6 rounded to 100 (

99.6은 INT 없습니다. 100입니다. 그래서 99.6을 표시하려면

이 double이라는 사실을 알려 주어야합니다.

+0

그 코드 행은'99.6'이 아니라'99.599987561464' 또는 그와 비슷한 것을 인쇄 할 수 있습니다. –

+0

참. 라운딩으로 해결할 수 있습니다. – Stultuske

+0

또는'System.out.printf ("double : % .2f \ n", d); ' –

0

이 방법을 사용하여 String의 정수를 얻을 수 있습니다 :

Integer.parseInt(s); 

가하는 double의 정수를 얻으려면 당신이 Math에서 ceil 방법을 사용할 수 있습니다, 그리고 정수로 그 결과를 캐스팅 :

:
(int) Math.ceil(d) 

, 당신이 간단한 논리를 사용할 수있는 정수로 boolean를 변환하는

if (b == true) 대신 if (b)을 사용하는 것이 좋습니다.

+0

(int) d는 그를 인쇄 할 수 없게합니다. 99.6 – Stultuske

+0

@ m0skit0 IMO'3/3'이 3 진 표현식보다 우선합니다. –

+2

'(b == false)''(! b)'를 의미합니까? '== true' 나'== false'와 같은 "가르침"은 피해야합니다. – Tom

0

당신은 그런 일을 의미합니까 :

public int convert (boolean b) { 
    // conversion: 1 - true, 0 - false 
    int result = b ? 1 : 0; 

    // debug information printing out 
    System.out.println("This is an boolean " + result); 
    // Do you really want to return 0 in any case? 
    // Returning conversion result looks far better 
    return result; 
} 
관련 문제