我知道这很难看,但它有效(不是真的)它只是编译成功
我无法使用 Integer.parseInt() 或 Math.max
我必须定义每个字符并设置要检查的算法
我理解像 11111111 这样的 8 位二进制数的概念,其十进制为 255,但是在我的程序中它就像 12495...什么说明我做错了什么?
也不是每个二进制数都是 8 个字符,我怎样才能让代码接受它并验证提示中只输入了 1 和 0?
import java.util.Scanner;
public class Binary
{
public static void main(String[] args)
{
Scanner keyboard = new Scanner(System.in);
System.out.println("Enter Binary Number Please:");
String aString = keyboard.next();
char aChar = aString.charAt(0);
int digit_1 = aString.charAt(0);
char bChar = aString.charAt(1);
int digit_2 = aString.charAt(1);
char cChar = aString.charAt(2);
int digit_3 = aString.charAt(2);
char dChar = aString.charAt(3);
int digit_4 = aString.charAt(3);
char eChar = aString.charAt(4);
int digit_5 = aString.charAt(4);
char fChar = aString.charAt(5);
int digit_6 = aString.charAt(5);
char gChar = aString.charAt(6);
int digit_7 = aString.charAt(6);
char hChar = aString.charAt(7);
int digit_8 = aString.charAt(7);
float dec_1 = (digit_1*128);
float dec_2 = (digit_2*64);
float dec_3 = (digit_3*32);
float dec_4 = (digit_4*16);
float dec_5 = (digit_5*8);
float dec_6 = (digit_6*4);
float dec_7 = (digit_7*2);
float dec_8 = (digit_8*1);
float Answer = (dec_1+dec_2+dec_3+dec_4+dec_5+dec_6+dec_7+dec_8);
System.out.println(Answer);
}//End bracket method main
}//End bracket class Binary
最佳答案
数学是正确的,但是当您查看 charAt(position) 时,它返回一个字符,并且应该为您提供 ASCII 值而不是数字值。
你应该使用这样的东西
Character.getNumericValue(c)
所以像这样
char theChar0 = String.charAt(0);
int digit0 = Character.getNumericValue(theChar0);
我很确定这是正确的 - 我是一名应届大学毕业生,所以无论如何都不是专家,但祝你好运!
关于java - 需要验证循环,二进制到十进制未输出正确的答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39378621/