我试图将二进制字符串变成小数。如果输入-1,它将终止。我坚持使用数组。有人建议使用:public static int binaryToDecimal(String binaryString)。但我不知道该怎么做。这就是我所拥有的:
import java.util.Scanner;
public class BinaryConversion {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String inString;
int decimal;
System.out.println("Enter a binary number: ");
inString = input.nextLine();
while (inString != "-1") {
int i;
int binaryLength;
binaryLength = inString.length();
for (i = 0, decimal = 0; i < binaryLength; i++) {
decimal = decimal * 2 + (inString[i] - 0);
System.out.print(decimal);
}
System.out.println("Enter a binary number: ");
inString = input.nextLine();
}
System.out.println("All set !");
}
}
它说数组存在编译问题。谢谢!
答案 0 :(得分:1)
inString是一个String,而不是一个数组。所以,你不能使用inString [i]。要获取字符串中给定位置的字符,请使用inString.charAt(i),它返回一个char。
然后,您还必须将该char转换为int。 您可以使用Character.getNumericValue(char)执行此操作。
总而言之,而不是
inString[i]
你需要使用
Character.getNumericValue(inString.charAt(i))
答案 1 :(得分:1)
试试这个:
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String inString;
int decimal;
System.out.println("Enter a binary number: ");
inString = input.nextLine();
//Character.getNumericValue(inString.charAt(i))
while (inString != "-1") {
int i;
int binaryLength;
binaryLength = inString.length();
for (i = 0, decimal = 0; i < binaryLength; i++)
{
decimal = decimal * 2 + (Character.getNumericValue(inString.charAt(i)) - 0);
System.out.print(decimal);
}
System.out.println("Enter a binary number: ");
inString = input.nextLine();
}
System.out.println("All set !");
}
}
根据建议,您必须使用Character.getNumericValue
答案 2 :(得分:1)
您可以使用Integer.parseInt()
:
public static void main(String[] args) {
final Scanner input = new Scanner(System.in);
String inString;
while (true) {
System.out.println("Enter a binary number: ");
inString = input.nextLine();
if (inString.equals("-1"))
break;
System.out.println(Integer.parseInt(inString, 2));
}
System.out.println("All set !");
}
答案 3 :(得分:0)
您的逻辑和语法错误很少。
这是有效的代码:
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String inString;
int decimal;
System.out.println("Enter a binary number: ");
inString = input.nextLine();
while (!"-1".equals(inString)) {
int i;
int binaryLength;
binaryLength = inString.length();
for (i = binaryLength-1, decimal = 0; i >= 0; i--) {
if (inString.charAt(i) == '1') {
decimal += Math.pow(2, binaryLength-i-1);
}
}
System.out.println(decimal);
System.out.println("Enter a binary number: ");
inString = input.nextLine();
}
System.out.println("All set !");
}
请注意,无法使用==
比较字符串,您必须使用equals
或compareTo
方法。
答案 4 :(得分:0)
byte[] binary = {1,1,0,1};
int decimal = 0;
for(int i=binary.length-1, j=0; i>=0; i--, j++){
decimal += binary[i]*Math.pow(2, j);
}