2013-07-12 2 views
-3

코드가 작동하지 않습니다. 그것은 내 프로그램의 초기 부분입니다. 문자열을 되돌리려 할 때 주 오류가 발생합니다. 누군가 그것을 볼 수 있습니까?문자열로 이진수를 반전합니다.

이진수를 10 진수로 변환하려면 문자열을 반대로 가져야합니다. 코드를 보지 않고

String checka, checkb; 
    checka = txt1.getText(); 
    checkb = txt2.getText(); 
    int lchecka = checka.length(); 
    int lcheckb = checkb.length(); 
    int ia, ib, p = 1, q = 1; 

    for (ia = 0; ia < lchecka; ia++) 
    { 
    if (checka.charAt(ia) == '1' || checka.charAt(ia) == '0') 
    { 
     p = 1; 
    } 
    else 
    { 
     p = 0; 
     break; 
    } 
    } 
    for (ib = 0; ib < lcheckb; ib++) 
    { 
    if (checkb.charAt(ib) == '1' || checkb.charAt(ib) == '0') 
    { 
     q = 1; 
    } 
    else 
    { 
     q = 0; 
     break; 
    } 
    } 

    double adda = 0, addb = 0, ansa = 0, ansb = 0; 
    int inta, intb; 
    inta = Integer.parseInt(txt1.getText()); 
    intb = Integer.parseInt(txt2.getText()); 
    if (p == 1 && q == 1) 
    { 
    String checkka; 
    checkka = txt1.getText(); 
    String checkkb; 
    checkkb = txt2.getText(); 
    int lcheckka = checkka.length(); 
    int lcheckkb = checkkb.length(); 
    Character oa, ob; 

    int ra, rb; 
    String reva, revb; 
    oa = checkka.charAt(lcheckka - 1); 
    reva = oa + ""; 
    ob = checkkb.charAt(lcheckkb - 1); 
    revb = ob + ""; 

    oa = checkka.charAt(lcheckka - 2); 
    reva = reva.substring(0) + oa; 
    ob = checkkb.charAt(lcheckkb - 2); 
    revb = revb.substring(0) + ob; 

    for (ra = lcheckka - 3; ra >= 0; ra--) 
    { 

     oa = checkka.charAt(ra); 
     reva = reva.substring(0, ra - 1) + oa; 
    } 
    for (rb = lcheckkb - 3; rb >= 0; rb--) 
    { 

     ob = checkkb.charAt(rb); 
     revb = revb.substring(0, rb - 1) + ob; 
    } 

    System.out.println(reva); 
    System.out.println(revb); 
    } 
+0

어떤 부분이 작동하지 않습니까? 문자열 반전이 작동하지 않습니까? –

+1

미안하지만, 당신이 묻는 방법이 아닙니다. 그것을 고치려고 무엇을 했습니까? 코드의 어느 부분이 손상되었다고 생각하십니까? 그냥 여기에 코드를 덤프하고 "내 코드가 작동하지 않습니다"라고 말하지 마십시오. 또한 코드의 형식을 지정하는 방법도 배웁니다. 그것은 읽을 수 없습니다. – garbagecollector

+0

자명 한 변수 이름 (힌트 : ia, ib, p, q, lchecka, lcheckb, adda, addb, ansa, ansb는 * 자명하지 않음)을 사용해야합니다. – assylias

답변

0

, 당신은 쉽게 다음과 같은 문자열을 반대 수 :

String reverse(String input) { 
    return new StringBuilder(input).reverse().toString(); 
} 
+0

이것이 숙제 였지만 반전은 수동으로해야합니다. 응답 B 의 약자 N ansb – Dukeling

+0

그래 exuse 모든 서둘러이 만든 그 의 수 U 일본 표준시 입력기 메신저 문자열의 형태로 문자열 빌더를 사용하는 방법을 잘하지 않는 바이너리 없음을 반전 할 수있는 코드 위에 주어진 코드 – user2568906

+0

아니, 어쨌든 나는 그것을 바꿀 수있다 .. 자동으로 할 수 있지만 매우 자동으로 그것을하는 방법을 알고있다. – user2568906

0

먼저 혼란입니다 :

public String reverseString(String str) { 
    int i, len = str.length(); 
    StringBuffer dest = new StringBuffer(len); 

    for (i = (len - 1); i >= 0; i--) 
     dest.append(source.charAt(i)); 
    return dest.toString(); 
} 

또는 가장 좋은 방법이다.

inta = Integer.parseInt(txt1.getText()); 
intb = Integer.parseInt(txt2.getText()); 

다음은 위에 언급 한 문자열을 반대로 방법을 사용하여 자신 만의 방법으로 진수로 변환하고 마지막으로 당신이 할 수 있습니다 : 당신은 진수 진수를 변환하려고하기 때문에 당신은 NumberFormatException이지고있다 Integer.parseInt를 사용할 수 있습니다.

관련 문제