2015-09-25 3 views
0

Эта программа должна преобразовывать двоичные числа в десятичные числа и выдает исключение, когда вход имеет не двоичные числа. Эта программа будет читать 1s, но когда я ввожу 0s, она выкинет исключение и скажет, что он не двоичный.Почему моя двоичная программа преобразования десятичных чисел не читает 0?

Программа испытаний:

//Prepare scanner from utility for input. 
    import java.util.Scanner; 

    public class Bin2Dec { 
     public static void main (String[] args){ 
     //Convert the input string to their decimal equivalent. 
     //Open scanner for input. 
     Scanner input = new Scanner(System.in); 
     //Declare variable s. 
     String s; 

     //Prompt user to enter binary string of 0s and 1s. 
     System.out.print("Enter a binary string of 0s and 1s: "); 
     //Save input to s variable. 
     s = input.nextLine(); 
      //With the input, use try-catch blocks. 
      //Print statement if input is valid with the conversion. 
      try { 
      System.out.println("The decimal value of the binary number "+ "'" + s + "'" +" is "+conversion(s)); 
      //Catch the exception if input is invalid. 
       } catch (BinaryFormatException e) { 
        //If invalid, print the error message from BinaryFormatException. 
       System.out.println(e.getMessage()); 
       } 
      } 
      //Declare exception. 
      public static int conversion(String parameter) throws BinaryFormatException { 
      int digit = 0; 
      for (int i = parameter.length(); i > 0; i--) { 
       char wrong_number = parameter.charAt(i - 1); 
       if (wrong_number == '1') digit += Math.pow(2, parameter.length() - i); 
       //Make an else statement and throw an exception. 
       else 
        throw new BinaryFormatException(""); 
      } 
      return digit; 
      } 
     } 

Исключение программы:

public class BinaryFormatException extends Exception { 
     //Declare message. 
      private String message; 
      public BinaryFormatException(String msg) { 
      this.message = msg; 
      } 
      //Return this message for invalid input to Bin2Dec class. 
      public String getMessage() { 
      return "Error: This is not a binary number"; 
      } 
     } 
+0

... потому что вы сказали ей? 'if (wrong_number == '1') {/ * do stuff * /} else throw new BinaryFormatException();' – immibis

ответ

1

Вы бросаете BinaryFormatException исключение, если символ не один.

 if (wrong_number == '1') digit += Math.pow(2, parameter.length() - i); 
      //Make an else statement and throw an exception. 
      else 
       throw new BinaryFormatException(""); 
0

Вы бросаете BinaryFormatException Исключение, если символ не является одним.

if (wrong_number =='1') ->if (wrong_number =='1' || wrong_number=='0')

Смежные вопросы