![](/img/trans.png)
[英]Converting user input from binary to decimal using Modulus Operator in Java
[英]How to convert binary to decimal in java using modulus?
我正在嘗試編寫代碼,允許用戶使用模數以二進制形式輸入數字(限制為8位數字)。 到目前為止,我有:
導入java.util.Scanner; 公共班級主要{
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter a Binary Number (8 digit limit)");
int binaryNum = input.nextInt();
int m = 0;
int l;
for (int n = 0; n <= 7; n++){
l = (2^n);
if(binaryNum%(10^(n+1)) == (10^n)){
m = m + l;
binaryNum = binaryNum - (10^n);
}
}
System.out.println("Decimal: " + m);
}
}
我嘗試輸入數字1001010,但每次輸入時,它都會顯示為“十進制:2”,這顯然是錯誤的。 有人可以幫忙嗎?
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter a Binary Number (8 digit limit)");
int binaryNum = input.nextInt(); // reading binary number
int m = 0; // to store decimal number
int l = 0; // to manage power of 2
int d = 0; // to store intermediate result
while (binaryNum != 0){ // looping till all digits are over
d = binaryNum % 10; // taking the last bit of the binary number
d *= Math.pow(2, l++); // finding 2^l
binaryNum /= 10; // dividing the binary number by 10 to shift one bit
m += d; // add the result to decimal
}
System.out.println("Decimal: " + m); // display result
}
}
我已經編輯了代碼,以便將binaryNum
正確地轉換為十進制。 希望這可以幫助。!!
如果使用基數2,可以使用Integer.parseInt
將字符串轉換為整數:
int decimalValue = Integer.parseInt(c, 2);
您應該能夠獲得它的二進制值。
例:
System.out.println(Integer.parseInt("1001010", 2));
輸出: 74
現在您需要實現的就是限制用戶可以輸入的字符串的長度,您希望將其設置為8,這樣就可以了。
如果您不想使用parseInt,也可以執行以下操作:
int binaryNumber = 10201; //example input binary
int decimal = 0;
int p = 0;
while(true){
if(binaryNumber == 0){
break;
} else {
int temp = binaryNumber%10;
decimal += temp*Math.pow(2, p);
binaryNumber = binaryNumber/10;
p++;
}
}
System.out.println(decimal);
在這種情況下,我正在從int
轉換,我想這對您來說還可以,您只需要在Scanner
上接受int
而不是String
,或者將String
轉換為int
完成您需要的工作,我認為您濫用了實施中的某些操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.