簡體   English   中英

用Java實現異常的問題

[英]Problems with implementing exceptions in Java

我想編寫一個將二進制數轉換為十進制的程序。 我已經發現問題是我什至無法獲得“捕獲路徑”。 我也知道我必須用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);

    }

}

為了到達catch塊,必須在某個地方拋出異常。 通常,Java方法會為您執行此操作,但是由於您自己來解析所有內容,因此必須拋出異常。 一種方法是在遇到無效數字時convert() 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);

    }

}

您需要指定在哪里拋出NumberFormatException。 我將if放入要檢查char的for循環中,如果它不是'0'或'1',則拋出異常。 希望我能幫上忙。

如果輸入錯誤,則可以引發NumberFormatException Java允許這樣做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM