java - 检查由字符串表示的数字是否在特定的计数基础中

标签 java android

我想实现一个算法来检查一个数字是否在特定的记数基数中,因为大于 10 的记数基数的数字在它们的组合数字中由我被迫使用字符串的字符表示。

我的实现思路是这样的:

private String values = "0123456789ABCDEF";

private boolean check_base(String number,String base) {
    StringBuilder no = new StringBuilder(number);
    while (no.length() != 0) {
        if (no.charAt(number.length() - 1) != '.' && values.indexOf(no.charAt(number.length() - 1)) >=
                values.indexOf(no.charAt(Integer.parseInt(base)))) {
            return false;
        }
        no.deleteCharAt(no.length() - 1);
    }
    return true;
}

我不知道为什么它会崩溃,我的调试看起来像这样:

private boolean check_base(String number,String base) { base: "16" number: "1.011.0"
    StringBuilder no = new StringBuilder(number); no: "1.011.0" number: "1.011.0"
    while (no.length() != 0) {

在这个 while 循环之后我的应用程序崩溃了。我认为那是因为那个 '.' 但这是有 no.charAt(number.length() - 1) != '.' 条件的原因所以我认为这不是问题,也不是我使用 values.indexOf(no.charAt(number.length() - 1)) 的事实,但我不知道为什么这会导致崩溃。

最佳答案

好的,您的代码已修复。尝试并与您的版本进行比较。
你有 no.charAt(number.length() - 1) 这是错误的,因为 number 不会改变。你需要 no ,像这样 no.charAt(no.length() - 1)。另外,你还有一个小问题。

public class Test0030 {

    public static void main(String[] args) {
        System.out.println(check_base("1.017.0", "8"));
        System.out.println(check_base("1.017.0", "7"));
        System.out.println(check_base("1.01F.0", "16"));
        System.out.println(check_base("1.01F.0", "15"));
    }

    private static String values = "0123456789ABCDEFG";

    private static boolean check_base(String number, String base) {
        StringBuilder no = new StringBuilder(number);
        while (no.length() != 0) {
            if (no.charAt(no.length() - 1) != '.' 
                    && 
                    values.indexOf(no.charAt(no.length() - 1)) >=
                    values.indexOf(values.charAt(Integer.parseInt(base)))) {
                return false;
            }
            no.deleteCharAt(no.length() - 1);
        }
        return true;
    }
}

关于java - 检查由字符串表示的数字是否在特定的计数基础中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34270847/

相关文章:

java - 使用 Java Checker Framework 的 Nullness Checker 注释可重入性

java - 如何创建具有不同引用的同一对象的副本?

java - finally { if (inputStream != null) { inputStream.close();

android - 我没有找到ID的 View … fragment YouTubePlayerSupportFragment,它关闭了我的应用程序

java - 在android中使用ftp4j连接到FTP服务器时出错

java - 如何读取同一节点下多种数据类型的firebase数据库?

java - 从 javascript 调用 JApplet 函数不是函数

java - 如何从 servlet 中获取其他 servlet 的 URL

android - React Native Android 应用程序在启动时崩溃

android - 远程数据库帮助类