2016-09-30 3 views
0
public static String DeciToBin(int i) 
{ 
    String zero="0"; 
    String one="1"; 
    String str = ""; 
    if(i==0) 
    { 
     return zero; 
    } 
    if(i==1) 
    { 
     return one; 
    } 
    for(;i<2;i/=2) 
    { 
     if(i%2==1) 
     { 
      str= one+str; 
     } 
     if(i%2==0) 
     { 
      str=zero+str; 
     } 
    } 
    return str; 
} 

1보다 클 때 아무 것도 밝혀지지 않았습니다.이 줄에는 오류 또는주의가 없습니다. 내가 놓친 게 무엇입니까?숫자 변환 알고리즘?

+0

에 INT 변환하는 자바에 다음과 같은 방법을 사용할 수 있습니다! = 0'과'내가! = 1' , 'i <2'는 즉시 false입니다. 디버거를 사용하여 코드를 단계별로 수행하십시오. –

+0

힌트 : for 루프는 조건 (귀하의 경우 'i <2')이 충족되는 경우에만 진행됩니다. – Shadov

답변

0

숫자가 2 이상이면 i>0이 아닌지 테스트해야합니다.

많이 단순화 할 수 있습니다.

public static String deciToBin(int i) { 
    String str = ""; 
    do { 
     str = (i & 1) + str; 
     i >>>= 1; 
    } while (i != 0); 
    return str; 
} 

더 나은 당신은 바이너리를 INT로 변환하는 자바에 다음과 같은 방법을 사용할 수 있습니다 StringBuilder에

public static String deciToBin(int i) { 
    StringBuilder str = new StringBuilder(); 
    do { 
     str.append(i & 1); 
     i >>>= 1; 
    } while (i != 0); 
    return str.reverse().toString(); 
} 
+0

나는 자바를 처음 접한다. 내 어리 석음을 용서해라. ....... –

0

을 사용하는 것입니다. 내가`경우

Integer.toBinaryString(a); 

당신은, i`는 음수가`가정 어떤 기본

Integer.toString(Number, Base);