Моя цель - создать простой двоичный в десятичный калькулятор.Я пытаюсь сделать это, сначала попросив пользователя ввести строку двоичного значения, которое он пытается вычислить, а затем использовать длину этой строки для запуска цикла for (как видно из кода ниже).Калькулятор работает нормально, но не работает, когда пользователь вводит двоичное число (из всех 1) длиной более 20 цифр.Я получаю сообщение об ошибке java.util.InputMismatchException и не знаю, как это исправить.
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("Please enter a binary number to convert to decimal: ");
long binaryNum = scan.nextLong();
System.out.println(binaryConverter(binaryNum));
scan.close();
}
public static long binaryConverter(long binaryNum) {
String binaryString = Long.toString(binaryNum);
long decimalValue = 0;
for(int i = 0; i < binaryString.length(); i++) {
if((binaryNum%10) == 0) {
binaryNum = binaryNum/10;
} else if((binaryNum%10) == 1) {
decimalValue += Math.pow(2, i);
binaryNum = binaryNum/10;
} else {
System.out.println("This isn't a binary number. Please try again.");
break;
}
}
return decimalValue;
}
}