2012-04-13 3 views
0

Decimal을 Binary로 변환하는 메서드를 만들려고합니다. (제대로 작동하지 않는) 여기에 지금까지 쓴된다10 진수 - 2 진수 변환에 잘못된 함수가 있습니까?

public static String D2B(int decimal){ 
    String binaryValue=""; 
    for (int tempDecimal=decimal;0==tempDecimal;tempDecimal/=2){ 
     binaryValue=tempDecimal%2+binaryValue; 
    } 
    return binaryValue; 
} 


public static void main(String[]args){ 
    int myValue=127; 
    System.out.println(D2B(myValue)); 
} 
+0

여기에 소수점이 없습니다. 실제로 수행중인 작업은 인쇄 가능한 ASCII로 변환하는 것입니다. 도움말 – EJP

답변

2

내가 루프의 조건이 잘못 생각 :

tempDecimal가 0 인 동안이 루프 것을
for(int tempDecimal=decimal;0==tempDecimal;tempDecimal/=2) 

주, 이는 루프가 0이 아닌 입력에 대해 루프되지 않아야하고 0 입력에 대해 영원히 반복된다는 것을 의미합니다.

for(int tempDecimal = decimal; 0 != tempDecimal; tempDecimal /= 2) 

으로 다시 작성하십시오. 입력으로 0을, 입력에 음수를주의하십시오. 그들은 현재의 접근 방식으로 올바르게 나오지 않을 것입니다.

다른 몇 가지 사소한 니트 :

  • 내가 강력하게 정확하게 코드를 들여 쓰기 및 읽기 쉽 운영자 사이에-공간을 두는 것이 좋습니다. 코드를 훨씬 쉽게 읽을 수있게 해 주었고, 더 많은 공간이 있으면 더 쉽게 버그를 발견했을 것입니다.
  • 이 함수에서 두 번째 변수 tempDecimal을 만들 이유가 없습니다. Java 매개 변수는 값에 의해 전달되므로 인수에 대한 변경 사항은 호출자에 표시되지 않습니다. 다른 곳에서는 decimal 값을 사용하지 않으므로 추가 변수가 불필요합니다.

희망이 있습니다.

+0

오 .. 내 실수 ... 감사합니다 ... 조언에 대한 –

+0

덕분에 ... 나는 프로그래밍 규칙에 대해 잘 모르는 ... ... 지금은 것을 얻었다을 프로그래밍을위한 새로운 해요 ... 다음 결코 일어나지 않을 시간 ... 다시 한번 감사드립니다 ... –