を使用せずに、2 進数を 10 進数に変換する簡単なプログラムを作成しようとしていますmath.pow()
。これが私がこれまでに持っているものMath.pow
で、最後に使用しています:
import java.util.Scanner;
public class Question1 {
public static void main(String[] args) {
System.out.println("Enter a binary number");
Scanner inputKeyboard = new Scanner(System.in);
String binaryNumber = inputKeyboard.nextLine();
while (!checkIfBinary(binaryNumber)) {
System.out.println("That is not a binary number. Enter a binary number");
binaryNumber = inputKeyboard.nextLine();
}
int decimalNumber = binaryToNumber(binaryNumber);
System.out.println("Your number in base 10 is " + decimalNumber + ".");
}
public static boolean checkIfBinary(String input) {
for (int i = 0; i < input.length(); i++) {
if(input.charAt(i) != '0' && input.charAt(i) != '1') {
return false;
}
}
return true;
}
public static int binaryToNumber(String numberInput) {
int total = 0;
for (int i = 0; i < numberInput.length(); i++) {
if (numberInput.charAt(i) == '1') {
total += (int) Math.pow(2, numberInput.length() - 1 - i);
}
}
return total;
}
}
なしでべき乗を行う際に問題が発生していmath.pow
ます。ループを使用する必要があることはわかっており、このループは 2 倍する必要がありますnumberInput.length() - 1 - i
。しかし、私はこれを実装するのに苦労しています。