Java 将字符串中的每个数字标记化?

Java 将字符串中的每个数字标记化?,java,stringtokenizer,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.print

我这里有一段代码:

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{
公共静态void main(字符串参数[])
{
扫描仪输入=新扫描仪(System.in);
System.out.println(“输入二进制数”);
字符串binary=input.nextLine();
System.out.println(转换(二进制));
}
公共静态整数转换(字符串二进制)
{
StringTokenizer st=新的StringTokenizer(二进制“”);
int n=st.countTokens()-1;//用作b^n中用于转换的幂数
int结果=0;
而(st.hasMoreTokens()){
int binaryInt=Integer.parseInt(st.nextToken());

result+=binaryInt*(1如果您得到一个类似于
“10011010”
的字符串,您不需要标记器,只需在该字符串上迭代并使用
字符即可:

for (int i = 0; i < s.length(); i++) {
    char currentDigit = s.charAt(i);
    // Do stuff with the digit
}
for(int i=0;i
像这样的东西怎么样:

    // remove everything that is not a digit
    String digitsOnly = binary.replaceAll("[^\\d]","");
    //iterate over every digit
    for(char digit:digitsOnly.toCharArray()) {
        int n = Character.getNumericValue(digit);
        // do stuff...
    }

@Tony我想你试着在这里添加数字的ascii值 对于输入值10 第一轮

int binaryInt=binary.char(i);因此binaryInt将得到值=49(char'1'的aski值)

因此结果=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;
    }

   }
public int getDecimal(字符串二进制字符串){
//binaryString=“1101”;
int结果=0;
int n=binaryString.length()-1;

为了(int i=0;i=48&&num)获得2^n使用
1@LưuVĩnhPhúc更新,谢谢你的提示!在更改为
charAt()之后,不知为什么我的数学错了
,即使我没有更改任何计算…`这就是发生的事情,可能就是正在发生的事情。我没有足够的能力尝试解决这个问题,所以我使用了piet.t的解决方案,它会按预期返回结果。上述注释中所述的函数是否达到了您的目的?