java - 标记字符串数字中的每个数字?

标签 java stringtokenizer

我这里有这段代码:

public class Project1 {
    public static void main(String args[])
    {
        Scanner input = new Scanner(System.in);
        System.out.println("Input a binary number");
        String binary = input.nextLine();
        System.out.println(Conversion(binary)); 
    }

    public static int Conversion(String binary)
    {
        StringTokenizer st = new StringTokenizer(binary, " ");
        int n = st.countTokens() - 1; // Used as the power number in b^n for conversion
        int result = 0;
        while(st.hasMoreTokens()){
            int binaryInt = Integer.parseInt(st.nextToken());
            result += binaryInt * (1 << n);
            n--;
        }
        return result;
    }

}

如果输入的二进制数之间有空格,它的效果非常好。例如,如果输入是 1 1 1 1,那么它将正确地返回 15。很酷,但是如何更改标记器以不需要空格来分隔每个数字?我尝试执行 StringTokenizer(binary, "");StringTokenizer(binary);,但都没有正确地将每个数字拆分成它自己的标记。

您会注意到,虽然 StringTokenizer 显然只适用于字符串,但我在返回结果之前在我的转换方法中将字符串转换为整数。

最佳答案

@ Tony 我认为你试图在此处添加数字的 ascii 值 对于输入值 10 第一次运行

int binaryInt = binary.char(i) ;所以 binaryInt 会得到 value = 49(aski value of char '1')

因此结果 = 49*2 = 98

第二轮

结果 = 98 + 48 *1 = 146

以下函数将满足您的目的,对于输入字符串“1101”,它返回 13

  public int getDecimal(String binaryString){
        //binaryString = "1101";
        int result = 0;
        int n = binaryString.length()-1;
        for(int i=0;i<binaryString.length();i++)
        {
            int num = binaryString.charAt(i);
            if(num>=48 && num <=57){
                result+=(num-48) * Math.pow(2, n)  ;
                n --;
            }

        }

        return result;
    }

   }

关于java - 标记字符串数字中的每个数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22979918/

相关文章:

java - 如何向我的代码添加错误处理?

java - Java 中的无限循环

java - 我需要将 java 代码的字符串标记为其 block

java - 如何通过 JDA 向 Discord 上的某人发送 DM(私信)

java - 在同一个类的方法中使用封装getter

java - 如何将 StringTokenizer 结果带到 Java 中的 ArrayList?

java - StringTokenizer,仅取出 4 个元素中的最后 3 个元素

java - 方法计算文件中的单词数

java - 使用不同的引用创建对象

java - 根据特定的预定义顺序对 TreeSet 中的对象进行排序