簡體   English   中英

JAVA:方法無法從另一種方法中找到值

[英]JAVA: Method can't find value from another method

所以我正在制作一個二進制到十進制轉換器,如果用戶輸入非法參數,我應該捕獲無效字符。 我相信我有捕獲任何非 0 或 1 字符的正確方法。但是,當我嘗試將此方法實現到我的主要方法 parseBinary 中時,它說它“無法找到非法符號(iChar)”。

我無法向 parseBinary 添加更多參數,因為用戶只應該輸入一個由 0 和 1 組成的字符串。 我很好奇我是否因為這個限制而一無所獲,但這是我所知道的唯一方法。 我是新手。 非常感謝任何/所有幫助。

public static int parseBinary(String binary) throws NumberFormatException {
    if (!isBinary(binary)) {
        throw new NumberFormatException("Invalid Format for a Binary String - Illegal character: " + illegal(iChar));
    }
    int power = 0;
    int decimal = 0;
    for (int i = binary.length() - 1; i >= 0; i--) {

        if (binary.charAt(i) == '1') {
            decimal += Math.pow(2, power);
        }
        power++;
    }
    return decimal;
}


public static boolean isBinary(String binary) {
    for (char ch : binary.toCharArray()) {
        if (ch != '1' && ch != '0'){
            return false;
        }
    }
    return true;
}

public static char illegal(String iChar)
{
    char test = 0;
    char arr[] = iChar.toCharArray();
    for(char cha : arr)
    {
        if (cha != '1' && cha != '0')
        {
            test = cha;
        }
    }
    return test;
}

正如@mureinik 所說的,而不是做

throw new NumberFormatException("Invalid Format for a Binary String - Illegal character: " + illegal(iChar));

您必須將二進制文件傳遞給非法方法

將其更改為

throw new NumberFormatException("Invalid Format for a Binary String - Illegal character: " + illegal(binary));

暫無
暫無

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

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