package com.javarush.task.pro.task09.task0905;
/*
Восьмеричный конвертер
*/
public class Solution {
public static void main(String[] args) {
int decimalNumber = 21;
System.out.println("Десятичное число " + decimalNumber + " равно восьмеричному числу " + toOctal(decimalNumber));
int octalNumber = 25;
System.out.println("Восьмеричное число " + octalNumber + " равно десятичному числу " + toDecimal(octalNumber));
}
public static int toOctal(int decimalNumber) {
int octalNumber = 0;
if (decimalNumber <= 0) {
return octalNumber;
}
int i = 0;
while (decimalNumber != 0) {
octalNumber = (int) (octalNumber + (decimalNumber % 8) * Math.pow(10, i));
decimalNumber = decimalNumber / 8;
i++;
}
return octalNumber;
}
public static int toDecimal(int octalNumber) {
int decimalNumber = 0;
if (octalNumber <= 0) {
return decimalNumber;
}
int i = 0;
while (octalNumber != 0) {
decimalNumber = (int) (decimalNumber + (octalNumber % 10) * Math.pow(8, i));
octalNumber = octalNumber / 10;
i++;
}
return decimalNumber;
}
}
Anonymous #2730510
1 уровень
Сначала не понял, потом понял почти все когда открыл код, объясните пж зачем ставить "(int)" (в первой строчке оператора while после ровно), потому что я пробовал убирать, оно перестает работать. P.s. А гуглить это хз как, но если объясните как найти эту тему, буду благодарен
Решен
Комментарии (3)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
KIRAExpert
23 июля 2021, 08:38
https://metanit.com/java/tutorial/2.2.php
https://javarush.com/groups/posts/1945-rasshirenie-i-suzhenie-primitivnihkh-tipov
0
Anonymous #2730510 director, founder в google
23 июля 2021, 08:58
то есть мы просто присваиваем тип математической операции, это всегда так нужно делать, или она просто длинная слишком? Хотя ответ прям в вопросе лежит, спасибо за помощь.
0
KIRAExpert
23 июля 2021, 12:28
при сужении тима мы явно указываем компилятору, что сознательно идем на этот шаг.
Типы переменных можно представить в виде коробок с ячейками, кол-во ячеек это кол-во бит которые можно поместить в определенный тип переменной, к примеру:
byte - 8 бит (коробка с 8 ячейками)
int - 32 бит (коробка с 32 ячейками)
при попытке положить все из маленькой коробки с большую у нас не возникнет никаких проблем ведь даже если маленькая полностью занята мы легко переложим это в большую
В виде кода
Что произойдет если поступить наоборот и попробовать положить из большой коробки в маленькую, возможно все не поместится и мы потеряем часть данных
В виде кода
компилятор укажет, что вы можете потерять данные при подобной операции и предложит явно указать, что вы согласны с этой операцией
0