要计算在Java中的串1的,0的,2的数

问题描述 投票:4回答:9

我是新的java字符串处理操作。

让我们考虑一个字符串包含的0,1的,2个的像下面秀

String content = "0011221100";

你可能会问我,你为什么不将它存储在整数的一个问题,因为在我的情况下,我应该只使用字符串。

输出是:

0's:4
1's:4
2's:2

我怎样才能实现这一目标。

java string
9个回答
7
投票

如果你只需要搜索qazxsw POI所以你可以尝试这样的事:

1's,0's,2's

5
投票

遍历您 String content = "0011221100"; int zeros = content.length() - content.replaceAll("0", "").length(); int ones = content.length() - content.replaceAll("1", "").length(); int twos = content.length() - content.replaceAll("2", "").length(); System.out.println("0's:" + zeros); System.out.println("1's:" + ones); System.out.println("3's:" + twos); 的字符使用String

对于每一个字符,检查它是否使用toCharArray()一个数字

递增你发现这个数字OCCURENCES的数量(可以使用10个时隙的阵列Character.isDigitint将是有用的)。

如果你知道,只有在你的Character.getNumericValue位,第2步是没用的。


3
投票

你可以试试这个方法。

String

输出地说:

    String content = "0011221100";
    Map<String,Integer> count=new HashMap<>();
    for(char i:content.toCharArray()){
        Integer index=count.get(String.valueOf(i));
       if(index!=null){
           count.put(String.valueOf(i),index+1);
       }else {
           count.put(String.valueOf(i),1);
       }
    }
    System.out.println(count);

3
投票

我建议尝试以下方法:

    {2=2, 1=4, 0=4}

现在,你可以简单的问了索引,并获得数量与字符串值=指数。

我不得不提到的是,int[] amountOfNumbers = new int[3]; for(int i = 0; i < content.length(); i++){ // Index 0 representing the number of 0s , Index 1 ..... and so on amountOfNumbers[content.charAt(i)-'0']++; } 必须有相同数量的条目,因为在你的字符串不同的号码。

如果您想进一步的信息,你可以阅读维基百科的文章计数排序:int[] array。我的方法是圆差不多全无事后分类整理。

这种方法适用永远如果你知道数字字符串组成的范围内。


1
投票

0
投票
public static void SymbolCounter( String source_ ) throws ParseException
{
    Map<Character, Integer> symbolCounter   = new HashMap<Character, Integer>();

    for( int i = 0 ; i < source_.length() ; ++i )
    {
        Character   symbol  = source_.charAt( i );
        Integer     counter = symbolCounter.get( symbol );

        if( null == counter )
        {
            counter = new Integer( 1 );

        }
        else
        {
            counter = counter + 1;

        }

        symbolCounter.put( symbol, counter );

    }

    Set<Character>  kyes    = symbolCounter.keySet();

    for( Character symbol : kyes )
    {
        Integer counter = symbolCounter.get( symbol );

        System.out.println( symbol.toString() + "'s:" + counter.toString() );

    }

}

0
投票

你去那里:

for (i=0;i<10;i++){
    reg=new RegExp("[^" + i + "]",'g');
    console.log(" " + i + "'s:" + content.replace(reg,"").length);
}

0
投票

我知道这是振兴死马,但现在有一个与Java流的另一种选择。

void PrintCount(String content)
{
    int[] histogram = new int[10];
    for (int i=0; i<10; i++)
        histogram[i] = 0;

    for (char c : content.toCharArray())
    {
        if ('0' <= c && c <= '9')
            histogram[c-'0']++;
    }

    for (int i=0; i<10; i++)
        System.out.println(i+"'s:"+histogram[i]);
}

0
投票

如果应用了Java 8个或更高版本中,您可以使用此:

"0011221100".chars().boxed().collect(
    Collectors.groupingBy(Character::getNumericValue, Collectors.counting()));
© www.soinside.com 2019 - 2024. All rights reserved.