2013-07-12 55 views
-3

我的代碼無法正常工作。這是我的計劃的最初部分。當我嘗試反轉字符串時發生主要錯誤。有人可以看看嗎?用字符串反轉二進制數字

爲了將二進制數轉換成小數,我必須得到反轉的字符串。

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

雖然這可能是家庭作業,逆轉應該手動完成。 – Dukeling

+0

ANSB代表應答b ñ耶任何藉口所有 匆忙做出如此 可以üJST吉美代碼反向二進制沒有這是一個字符串的形式 林不知道如何使用字符串構建上面給出的編碼 – user2568906

+0

不,我可以反向它,無論如何,我想..可以自動完成,但我不是很有經驗知道如何自動執行它 – user2568906

1

例如採用一臉How to reverse String in Java with or without StringBuffer Example

同時你可以看到下面的代碼:

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(); 
} 

或最好的辦法是:

的所有你的代碼
String str = // your string 
String reverse = new StringBuilder(str).reverse().toString(); 
+0

不好意思的傢伙..感謝很多:) – user2568906

0

首先是一片混沌。你得到一個NumberFormatException異常,因爲您嘗試將二進制數轉換爲十進制:

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

使用方法來扭轉他們上面所提到的字符串,然後將其轉換用自己的方法爲十進制,最後你會能夠使用Integer.parseInt。