У меня есть задание нужно сделать метод который будет принимать значение и возвращать int
Так вот возвращаемый int должен быть 6 значным числом и суть в том, что если число которое обработал метод в итоге размером всего допустим в 2 знака, то спереди должно добавиться четыре нуля.
Допустим метод в результате дал число 23 , то вернуть он должен 000023
Но int сбрасывает ненужные нули и в итоге все равно 23
Есть возможность получить такое число используя int ?
Если нужно распечатать то вот так
System.out.format("%04d\n", 1);
System.out.format("%07\n", 23);
System.out.format("%04d\n", 84);
System.out.format("%04d\n", 100);
output:
0001
0000023
0084
0100
Нет, потому что это число. Используй строку.
что я должен был увидеть?
Что у чисел не бывает лидирующих нулей. На них всегда в памяти выделено определённое число бит. И среди этих бит нет никакой информации про текстовое представление.
Все-таки можно, если ограничить диапазон хранимых чисел. Тогда число умножить на 10 и сложить с числом лидирующих нулей. По сути дела, используем целую переменную как контейнер для битов значения числа и дополнительной информации (в данном случае числа лидирующих нулей).
Максимальное (и минимальное, т.е. отрицательное) значение, которое можно записать в такую переменную, сокращается в 10 раз.
Только при остальной работе с ним, для получения исходного числа надо не забывать делить на 10, а для получения лидирующих нулей берем остаток от деления на 10.
Небольшой пример (но на Си, поскольку Java под рукой нет)
#include <stdio.h>
#include <stdlib.h>
int zint (int x)
{
int z = x, n = 1;
while (z /= 10)
n++;
n = (n > 5 ? 0 : 6 - n);
return (x *= 10) >= 0 ? x + n : x - n;
}
int
main (int ac, char *av[])
{
int x;
while (scanf("%d", &x) == 1) {
int z = zint(x);
int nz = z < 0 ? -z % 10 : z % 10;
printf("z = %d nz: %d num: %d\n", z, nz, z / 10);
printf("res: %06d\n", z / 10);
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
После создания Navigation drawer activity у нас есть 3 вертикальные полоски и, соответственно меню, а так же, справа, есть три точкиЗачем они нужны-то? Как...
Как сортировать datagridview по двум столбцам? Данные таблицы заполняются из txt и сами данные в таблице представлены в таком виде ( первая строка...
Есть необходимость выбрать 100 записей пропустив 500Может кто подскажет, можно ли сделать offset и limit для BindingSource?