这是我的第一个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();
}
}
您的代码说:如果binOrDec
是2
或Decimal
,则什么也不做,否则,打印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);
。