java二进制到十进制转换器

问题描述 投票:0回答:1

这是我的第一个Java程序之一,我很困惑为什么它不起作用。帮助?

此外,尽管'input'被赋予了正确的值,else语句仍会打印。我缺少条件语句的结构吗?

package beginning;
import java.util.Scanner;
import java.lang.Math;

// VERY BROKEN

public class BinaryDecimalConverter {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc = new Scanner(System.in);
        System.out.println("Number Base To Convert: 1) Binary 2) Decimal ::");
        String binOrDec = sc.next();
        System.out.println("Enter Number ::");
        long number = sc.nextInt();
        double result = 0;

        if ((binOrDec.equals("1")) || (binOrDec.equals("Binary"))) {
            char[] bin = ("" + number).toCharArray(); // conversion must be String >> char[]
            int index = bin.length - 1;
            double aggregate = 0;
            for (int i = 0; i < bin.length; i++) {
                aggregate = ((Math.pow(2, i)) * (bin[index])); // when using Math.pow(a, b) - a must be 'double' data type
                index = index - 1;
                result = result + aggregate;
            }   
        }
        if (binOrDec.equals("2") || binOrDec.equals("Decimal")) {
            // decimal-binary converter, unfinished.
        }
        else {
            System.out.println("Invalid Input");
        }

        System.out.println("" + number + " >> " + result);
        sc.close();

    }

}
java binary conditional-statements decimal converters
1个回答
0
投票

您的代码说:如果binOrDec2Decimal,则什么也不做,否则,打印invalid input。计算机会执行您告诉他们的操作。我认为您可能希望该行前面的else检查2 /十进制。

'不工作'不是一个好的开始。帮助我们帮助您:

  • 如果没有编译,请告诉我们编译器给您的错误,并确保行号匹配,否则,您可能使我们知道在哪里查找。
  • 如果确实可以编译,但是在运行时收到错误,请提供错误以及您提供的导致错误的任何输入。
  • 如果它确实可以编译,运行并且得到输出,但是它不是您期望的输出,请说明您键入的内容,期望的内容以及原因。

您的bin数组的类型为char[]。例如,如果我提供二进制数1010,则它包含4个字符:1、0、1和0。即字符。 ASCII字符。 ASCII字符1具有较大的数值(不是1):

char c = '1';
System.out.println(1 * c);

以上打印。...49

所以:aggregate = ((Math.pow(2, i)) * (bin[index]));是乘48还是49,具体取决于该字符是1还是0。我想您可能正在寻找if (bin[index] == '1') aggregate = Math.pow(2, i);

© www.soinside.com 2019 - 2024. All rights reserved.