二进制到十进制Java转换器
我正在创建一个代码,允许您将二进制数转换为十进制数,反之亦然。我创建了一个将十进制转换为二进制的代码,但无法解决如何实现二进制转换为十进制的问题 我的十进制到二进制代码如下:二进制到十进制Java转换器,java,Java,我正在创建一个代码,允许您将二进制数转换为十进制数,反之亦然。我创建了一个将十进制转换为二进制的代码,但无法解决如何实现二进制转换为十进制的问题 我的十进制到二进制代码如下: import java.util.*; public class decimalToBinaryTest { public static void main (String [] args) { int n; Scanner in = new Scanner(System.in);
import java.util.*;
public class decimalToBinaryTest
{
public static void main (String [] args)
{
int n;
Scanner in = new Scanner(System.in);
System.out.println("Enter a positive interger");
n=in.nextInt();
if(n < 0)
{
System.out.println("Not a positive interger");
}
else
{
System.out.print("Convert to binary is: ");
binaryform(n);
}
}
private static Object binaryform(int number)
{
int remainder;
if(number <= 1)
{
System.out.print(number);
return " ";
}
remainder= number % 2;
binaryform(number >> 1);
System.out.print(remainder);
{
return " ";
}
}
}
或者如果你喜欢自己做
double output=0;
for(int i=0;i<str.length();i++){
if(str.charAt(i)== '1')
output=output + Math.pow(2,str.length()-1-i);
}
双输出=0;
对于(int i=0;i样本:
00000100
0-1
0-2
1-4
0-8
0-16
0-32
0-64
0-128
位为1=4的和值
祝你好运!你想要这个吗
private double dec(String s, int i) {
if (s.length() == 1) return s.equals("1") ? Math.pow(2, i) : 0;
else return (s.equals("1") ? Math.pow(2, i) : 0) + dec(s.substring(0, s.length() - 1), i - 1);
}
dec("101011101",0);
这里有一个这样做的程序。
确保给int的整数不要太大
import java.util.Scanner;
public class DecimalBinaryProgram {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (true){
System.out.println("Enter integer in decimal form (or # to quit):");
String s1 = in.nextLine();
if ("#".equalsIgnoreCase(s1.trim())){
break;
}
System.out.println(decimalToBinary(s1));
System.out.println("Enter integer in binary form (or # to quit):");
String s2 = in.nextLine();
if ("#".equalsIgnoreCase(s2.trim())){
break;
}
System.out.println(binaryToDecimal(s2));
}
}
private static String decimalToBinary(String s){
int n = Integer.parseInt(s, 10);
StringBuilder sb = new StringBuilder();
if (n==0) return "0";
int d = 0;
while (n > 0){
d = n % 2;
n /= 2;
sb.append(d);
}
sb = sb.reverse();
return sb.toString();
}
private static String binaryToDecimal(String s){
int degree = 1;
int n = 0;
for (int k=s.length()-1; k>=0; k--){
n += degree * (s.charAt(k) - '0');
degree *= 2;
}
return n + "";
}
}
当然,对于此方法binaryToDecimal
,您可以执行以下操作:
private static String binaryToDecimal(String s){
int n = Integer.parseInt(s, 2);
return n + "";
}
但我想说明如何明确地做到这一点。这是二进制到十进制转换器的一个版本。我也使用了大量的注释。刚刚教过的内容我想与大家分享。希望对其他人有所帮助
import java.util.Scanner;
public class BinaryToDecimal
{
public static void main(String args[])
{
Scanner input = new Scanner(System.in);
System.out.println("Enter a binary number: ");
String binary = input.nextLine(); // store input from user
int[] powers = new int[16]; // contains powers of 2
int powersIndex = 0; // keep track of the index
int decimal = 0; // will contain decimals
boolean isCorrect = true; // flag if incorrect input
// populate the powers array with powers of 2
for(int i = 0; i < powers.length; i++)
powers[i] = (int) Math.pow(2, i);
for(int i = binary.length() - 1; i >= 0; i--)
{
// if 1 add to decimal to calculate
if(binary.charAt(i) == '1')
decimal = decimal + powers[powersIndex]; // calc the decimal
else if(binary.charAt(i) != '0' & binary.charAt(i) != '1')
{
isCorrect = false; // flag the wrong input
break; // break from loop due to wrong input
} // else if
// keeps track of which power we are on
powersIndex++; // counts from zero up to combat the loop counting down to zero
} // for
if(isCorrect) // print decimal output
System.out.println(binary + " converted to base 10 is: " + decimal);
else // print incorrect input message
System.out.println("Wrong input! It is binary... 0 and 1's like.....!");
} // main
} // BinaryToDecimal
import java.util.Scanner;
公共类BinaryToDecimal
{
公共静态void main(字符串参数[])
{
扫描仪输入=新扫描仪(System.in);
System.out.println(“输入二进制数:”);
String binary=input.nextLine();//存储用户输入
int[]幂=new int[16];//包含2的幂
int powerindex=0;//跟踪索引
int decimal=0;//将包含小数
布尔值isCorrect=true;//如果输入不正确,则标记
//使用2的幂填充幂数组
for(int i=0;i=0;i--)
{
//如果1加上小数进行计算
if(二进制字符(i)='1')
十进制=十进制+幂[powerindex];//计算十进制
else if(binary.charAt(i)!=“0”&binary.charAt(i)!=“1”)
{
isCorrect=false;//标记错误的输入
中断;//由于输入错误而中断循环
}//否则如果
//跟踪我们使用的电源
powerindex++;//从零开始计数,以对抗循环从零开始计数
}//为了
if(isCorrect)//打印十进制输出
System.out.println(二进制+”转换为10进制为:“+十进制”;
else//打印错误的输入消息
System.out.println(“输入错误!它是二进制的……0和1就像……!”;
}//主要
}//二进制数字
我编写了一个同时接受字符串和整数的转换器
public class Main {
public static void main(String[] args) {
int binInt = 10110111;
String binString = "10110111";
BinaryConverter convertedInt = new BinaryConverter(binInt);
BinaryConverter convertedString = new BinaryConverter(binString);
System.out.println("Binary as an int, to decimal: " + convertedInt.getDecimal());
System.out.println("Binary as a string, to decimal: " + convertedString.getDecimal());
}
}
public class BinaryConverter {
private final int base = 2;
private int binaryInt;
private String binaryString;
private int convertedBinaryInt;
public BinaryConverter(int b) {
binaryInt = b;
convertedBinaryInt = Integer.parseInt(Integer.toString(binaryInt), base);
}
public BinaryConverter(String s) {
binaryString = s;
convertedBinaryInt = Integer.parseInt(binaryString, base);
}
public int getDecimal() {
return convertedBinaryInt;
}
}
很抱歉,我不能这么做。我需要一个带循环和填充的算法。Mathematics.pow做什么?但我想要的是一个使用我在问题中建议的方法的程序。我没有理解你,你只需添加一个函数体并返回+1,以提供有用的答案,而不实际发布解决方案。问题看起来像是一个homework/一个练习,所以在我看来,这应该是公认的答案。当你发布答案时,你应该确保你完全理解这个问题-你应该使用注释来实现。谢谢。我有点了解它是如何工作的。当我回家后,我会尝试正确地解决它。还请添加一个解释,说明这个代码的作用以及它为什么有用ps操作,而不仅仅是粘贴代码
import java.util.Scanner;
public class BinaryToDecimal
{
public static void main(String args[])
{
Scanner input = new Scanner(System.in);
System.out.println("Enter a binary number: ");
String binary = input.nextLine(); // store input from user
int[] powers = new int[16]; // contains powers of 2
int powersIndex = 0; // keep track of the index
int decimal = 0; // will contain decimals
boolean isCorrect = true; // flag if incorrect input
// populate the powers array with powers of 2
for(int i = 0; i < powers.length; i++)
powers[i] = (int) Math.pow(2, i);
for(int i = binary.length() - 1; i >= 0; i--)
{
// if 1 add to decimal to calculate
if(binary.charAt(i) == '1')
decimal = decimal + powers[powersIndex]; // calc the decimal
else if(binary.charAt(i) != '0' & binary.charAt(i) != '1')
{
isCorrect = false; // flag the wrong input
break; // break from loop due to wrong input
} // else if
// keeps track of which power we are on
powersIndex++; // counts from zero up to combat the loop counting down to zero
} // for
if(isCorrect) // print decimal output
System.out.println(binary + " converted to base 10 is: " + decimal);
else // print incorrect input message
System.out.println("Wrong input! It is binary... 0 and 1's like.....!");
} // main
} // BinaryToDecimal
public class Main {
public static void main(String[] args) {
int binInt = 10110111;
String binString = "10110111";
BinaryConverter convertedInt = new BinaryConverter(binInt);
BinaryConverter convertedString = new BinaryConverter(binString);
System.out.println("Binary as an int, to decimal: " + convertedInt.getDecimal());
System.out.println("Binary as a string, to decimal: " + convertedString.getDecimal());
}
}
public class BinaryConverter {
private final int base = 2;
private int binaryInt;
private String binaryString;
private int convertedBinaryInt;
public BinaryConverter(int b) {
binaryInt = b;
convertedBinaryInt = Integer.parseInt(Integer.toString(binaryInt), base);
}
public BinaryConverter(String s) {
binaryString = s;
convertedBinaryInt = Integer.parseInt(binaryString, base);
}
public int getDecimal() {
return convertedBinaryInt;
}
}
public static void main(String[] args)
{
System.out.print("Enter a binary number: ");
Scanner input = new Scanner(System.in);
long num = input.nextLong();
long reverseNum = 0;
int decimal = 0;
int i = 0;
while (num != 0)
{
reverseNum = reverseNum * 10;
reverseNum = num % 10;
decimal = (int) (reverseNum * Math.pow(2, i)) + decimal;
num = num / 10;
i++;
}
System.out.println(decimal);
}