我知道这很难看,但它的确有效(不是真的)它只是成功编译
我不能使用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
答案 0 :(得分:1)
数学是正确的,但当你看charAt(位置)时,它返回一个字符,应该给你ASCII值而不是数字值。
你应该使用这样的东西
Character.getNumericValue(c)
这样的事情
char theChar0 = String.charAt(0);
int digit0 = Character.getNumericValue(theChar0);
我很确定这是正确的 - 我是最近的大学毕业生,所以不是专家,但祝你好运!
答案 1 :(得分:0)
标准方法是对输入的字符使用循环。每次循环时,首先检查当前值是0还是1(如果没有,发出错误消息并中断),将已有的值乘以2并添加当前数字的值。例如,如果输入os 101(应该等于5):从0开始。对于第一个数字,1(这是0或1,所以没关系),你的循环将做2 * 0 + 1 = 1。 digit(0)给出2 * 1 + 0 = 2.最后一位2 * 2 + 1 = 5.你已经完成了。
如果您在int
类型中进行计算,则适用于1到31位二进制数字。
如果值不是0或1,则可以抛出一个可以在正确的位置捕获的异常。
不知道为什么你的研究没有提出这个问题。当然,必须在互联网上的许多地方进行描述。 : - )
答案 2 :(得分:0)
你可以随时使用
int numOfDig = String.length();
然后放置numOfDig并创建一个for循环,将数据输入一个数组大小也是numOfDig的数组
然后另一个for循环来做数学运算。希望这是有道理的。
答案 3 :(得分:0)
这里你应该工作 - 确保你理解代码: 花了5分钟......
import java.util.Scanner;
public class binary {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner keyboard = new Scanner(System.in);
System.out.println("Enter Binary Number Please:");
String aString = keyboard.next();
int sizeOf = aString.length();
int[] binArray = new int[sizeOf];
char digitBin = ' ';
int digitChar = 0;
for(int i = 0; i < sizeOf; i++){
digitBin = aString.charAt(0);
digitChar = Character.getNumericValue(digitBin);
binArray[i] = digitChar;
}
int total = 0;
int multiplyNum = 1;
for(int i = sizeOf - 1; i > -1; i--){
total = (binArray[i] * multiplyNum) + total;
multiplyNum = multiplyNum * 2;
}
System.out.println(total);
}
}
如果你不熟悉Arrays和你所有的循环 - 最好开始练习......你会在学校里用它们一吨!