Java десятичный в двоичный без API и строк - PullRequest
0 голосов
/ 22 ноября 2011

Я должен написать программу на языке java (домашнее задание), которая дает ввод (x), ввод в двоичном формате, сообщает, является ли ввод палиндромом, и сообщает, является ли двоичный файл из ввода палиндромом. Я не могу использовать API, отличный от System.out.print, и не могу использовать строки.

Пока все хорошо: я написал программу, и она работает до x = 1023 (из-за int). Какой фрагмент кода я должен отредактировать, чтобы ввод мог быть любым положительным числом?

class Palindromes {
public static int DtoBinary(int x) {
    int y = x;
    int w = 1;
    int v = 0;
    int z = 1;
    int u = 0;
    while (z < y) {
        z = z * 2;
        u++;
    }
    z = z / 2;
    for (int t=1; t<u; t++) {
        w = 10 * w;
    }
    v = v + w;
    y = y - z;
    while (y > 0) {
        z = z / 2;
        if (z <= y) {
            w = w / 10;
            v = v + w;
            y = y - z;
        } else if (y == 1) {
            v = v + 1;
            y = 0;
        } else {
            w = w / 10;
            v = v + 0;
        }
    }
    return v;
}

public static boolean Palindrome(int x) {
    int s = x;
    int r = 0;
    while (s > 0) {
        int q = s % 10;
        r = r * 10 + q;
        s = s / 10;
    }
    if (x == r) {
        return true;
    } else {
        return false;
    }
}

public static void main(String[] args) {
    int x = 1023;

    System.out.print(x + " " + DtoBinary(x));
    if (Palindrome(x)) {
        System.out.print(" yes");
    } else {
        System.out.print(" no");
    }
    if (Palindrome(DtoBinary(x))) {
        System.out.print(" yes");
    } else {
        System.out.print(" no");
    }
}
}

Ответы [ 2 ]

0 голосов
/ 22 ноября 2011

Вы можете использовать массив char вместо int для хранения больших двоичных чисел для вашего класса палиндрома.

public static char[] DtoBinary(int x) {
  <insert code to convert x to an array of zeroes and ones>
}

Вам потребуется написать метод, который проверяет, является ли массив символов палиндромом.

0 голосов
/ 22 ноября 2011

Я могу предложить короткое решение для домашней работы.

public static boolean isPalindrome(int x) {
     String inputted = "" + x; 
     String reverse = new StringBuffer(inputted).reverse().toString();    

     return inputted.equals(reverse);
}

или

public static boolean isPalindrome(int x) {
     String inputted = "" + x;
     int length = inputted.length; 
     for(int i = 0; i< inputted/2; i++){
        if(inputted.charAt(i)!= inputted.charAt(inputted - 1 - i)){
           return false;
        }
     }

     return true;
}
...