【问题标题】:JAVA: Method can't find value from another methodJAVA:方法无法从另一个方法中找到值
【发布时间】:2017-10-24 05:58:57
【问题描述】:

所以我正在制作一个二进制到十进制转换器,如果用户输入非法参数,我应该捕获无效字符。我相信我有正确的方法来捕捉任何不是 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;
}

【问题讨论】:

  • 您应该将binary 传递给它,而不是iChar
  • 这样一个简单的解决方案。谢谢你指出来!

标签: java methods parameters


【解决方案1】:

正如@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));

【讨论】:

    猜你喜欢
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    • 2019-03-02
    • 2020-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多