Одной из наиболее часто выполняемых рутинных операций в программировании является преобразование строкового представления чисел во внутренний двоичный формат.
Правда, сделать это в Java совсем не трудно. В классах Byte, Short, Integer и Long для этой цели предоставляются методы parseByte(), parseShort(), parseInt() и parseLong() соответственно.
Эти методы возвращают значения типа byte, short, int или long, эквивалентные числовой строке, с которой они были вызваны (аналогичные методы предусмотрены в классах Float и Double).
В приведенном ниже примере программы демонстрируется применение метода parseInt(). В этой программе суммируется ряд целочисленных значений, вводимых пользователем.
С этой целью целочисленные значения считываются методом readLine() в виде числовых строк, которые затем преобразуются методом parseInt() в эквивалентные им числовые значения типа int.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
/* * Эта программа суммирует ряд целых чисел, вводимых пользователем. * Она преобразует строкове представление каждого числа * в целое значение методом parseInt() */ import java.io.*; public class ParseDemo { public static void main(String[] args) throws IOException { // создать буферизированный поток чтения типа BufferedReader, // используя стандартный поток ввода System.in BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str; int i; int sum = 0; System.out.println("Введите любое целочисленное число, 0 для выхода"); do { str = br.readLine(); try { i = Integer.parseInt(str); } catch (NumberFormatException e) { System.out.println("Неверный формат"); i = 0; } sum += i; System.out.println("Текущая сумма: " + sum); } while (i != 0); } } |
Вывод программы что-то наподобие следующего, все зависит от введенных вами чисел:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Введите любое целочисленное число, 0 для выхода 2 Текущая сумма: 2 3 Текущая сумма: 5 10 Текущая сумма: 15 11 Текущая сумма: 26 200 Текущая сумма: 226 9 Текущая сумма: 235 2.3 Неверный формат Текущая сумма: 235 |
Для преобразования целого числа в десятичную строку служат варианты метода toString(), определенные в классе Byte, Short, Integer или Long. В классах Integer и Long предоставляются также методы toBinaryString(), toHexString() и toOctalString(), преобразующие числовое значение в двоичную, шестнадцатеричную и восьмеричную строки соответственно.
В следующем примере программы демонстрируется преобразование целого числа в двоичную, шестнадцатеричную и восьмеричную строковую форму:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
/* * Преобразовать целое число в двоичную, шестнадцатеричную и * восьмеричную строковую форму */ import java.io.*; public class ParseDemo { public static void main(String[] args) throws IOException { // создать буферизированный поток чтения типа BufferedReader, // используя стандартный поток ввода System.in BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str; int i; do { System.out.println("Введите любое целочисленное число, 0 для выхода"); str = br.readLine(); try { i = Integer.parseInt(str); System.out.println("Число " + i + " в двоичной форме: " + Integer.toBinaryString(i)); System.out.println("Число " + i + " в восьмеричной форме: " + Integer.toOctalString(i)); System.out.println("Число " + i + " в шестнадцатеричной форме: " + Integer.toHexString(i)); System.out.println(); } catch (NumberFormatException e) { System.out.println("Неверный формат"); i = 0; } } while (i != 0); } } |
Вывод программы что-то наподобие следующего, все зависит от введенных вами чисел:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Введите любое целочисленное число, 0 для выхода 10 Число 10 в двоичной форме: 1010 Число 10 в восьмеричной форме: 12 Число 10 в шестнадцатеричной форме: a Введите любое целочисленное число, 0 для выхода 20 Число 20 в двоичной форме: 10100 Число 20 в восьмеричной форме: 24 Число 20 в шестнадцатеричной форме: 14 Введите любое целочисленное число, 0 для выхода 30 Число 30 в двоичной форме: 11110 Число 30 в восьмеричной форме: 36 Число 30 в шестнадцатеричной форме: 1e Введите любое целочисленное число, 0 для выхода |