我想编写一个程序来转换十进制的二进制数。 我发现问题是我甚至无法获得“追踪路径”。 我也知道我必须用char更改某些东西,但我绝对不会得到一个有效的解决方案。谢谢。
import java.util.Scanner;
public class BinaryStringToNumber {
public static void main(String[] args) {
String inputBinaer;
Scanner input = new Scanner(System.in);
System.out.print("Type in a binary number: ");
inputBinaer = input.next();
input.close();
try
{
convert(inputBinaer);
}
catch (NumberFormatException e)
{
System.out.println( "Just numbers!" );
} finally {
System.out.println( "Finally" );
}
}
public static void convert(String inputBinaer) throws NumberFormatException{
char [] puffer;
int dez = 0;
puffer = inputBinaer.toCharArray();
for(int i=0;i<puffer.length;i++){
if(puffer[i]== '1'){
dez = (int) (dez + Math.pow(2, puffer.length-1-i));
}
}
System.out.println("The decimal number is: " + dez);
}
}
答案 0 :(得分:2)
要进入catch
块,必须在某处抛出异常。通常,Java方法会为您执行此操作,但由于您自己解析所有内容,因此必须抛出异常。一种方法是在遇到无效数字时向throw
方法添加convert()
语句:
import java.util.Scanner;
public class BinaryStringToNumber {
public static void main(String[] args) {
String inputBinaer;
Scanner input = new Scanner(System.in);
System.out.print("Type in a binary number: ");
inputBinaer = input.next();
input.close();
try
{
convert(inputBinaer);
}
catch (NumberFormatException e)
{
System.out.println( "Just numbers!" );
} finally {
System.out.println( "Finally" );
}
}
public static void convert(String inputBinaer) throws NumberFormatException{
char [] puffer;
int dez = 0;
puffer = inputBinaer.toCharArray();
for(int i=0;i<puffer.length;i++){
if(puffer[i]== '1'){
dez = (int) (dez + Math.pow(2, puffer.length-1-i));
} else if (puffer[i] != '0') {
throw new NumberFormatException("Invalid digit: " + puffer[i]);
}
}
System.out.println("The decimal number is: " + dez);
}
}
答案 1 :(得分:0)
您需要指定抛出NumberFormatException的位置。我在for循环中放了一个if来检查char,如果它不是'0'或'1',我会抛出异常。希望我帮忙。
答案 2 :(得分:-1)
如果输入错误,您可以抛出NumberFormatException
。这在Java中是允许的。