2013-07-12 4 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 означает ответ б п да exuse всех этого сделал это в спешке мог у Jst жим код отменить бинарную NO, которая в виде строки им не уверены, как использовать струнный строитель кодирование приведено выше – 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.

Смежные вопросы