如何以2个字符的增量分隔此字符串?

bxpogfeg  于 2021-07-08  发布在  Java
关注(0)|答案(1)|浏览(319)

没有分隔符,字符串本身来自如下格式的文件:
bb型
国标
国标
背景
gg公司
国标
国标
国标
国标
gg公司
在使用了下面的代码之后,我只剩下bbgbbgggggbgg,就像在之后的print语句中打印的那样 token = in.nextLine( ) ; 我这个程序的目标是将每2个字符赋给它们的变量,并增加它们以获得一个计数。我只是不知道如何正确地递增和分配它们。感谢您的帮助。

import java.util.Scanner;
import java.io.File;
import java.io.IOException;
public class Family
{
   public static void main (String args[]) throws IOException {
    //variables defined
    int numGB = 0;
    int numBG = 0;
    int numGG = 0;
    int numBB = 0;
    int totalNum = 0;
    double probBG;
    double probGG;
    double probBB;
    String token ="";
    int spaceDeleter = 0;
    int token2Sub = 0;

    File fileName = new File ("test1.txt"); 

    Scanner in = new Scanner(fileName); //scans file

    System.out.println("Composition statistics for families with two children");
    while(in.hasNextLine())
    {
        token = in.nextLine( ); //recives token from scanner
        System.out.print(token);
        if(token.equals("GB"))
        {
        numGB = numGB + 1;
        }
        else if(token.equals("BG"))
        {
        numBG = numBG + 1;
        }
        else if(token.equals("GG"))
        {
        numGG = numGG + 1;
        }
        else if(token.equals("BB"))
        {
        numBB = numBB + 1;
        }
        else if(token.equals(""))
        {
        spaceDeleter =+ 1; //tried to delete space to no avial
        }
        else 
        {
        System.out.println("Data reading error");
        }
    }
eni9jsuy

eni9jsuy1#

最简单的方法是使用Map。若要拆分字符串,请将每两个字符替换为后跟一些未使用的字符的字符串。然后对这些角色进行分割。剩下的就是流化字符对数组并进行频率计数。

String s = "BBGBGBBGGGGBGBGBGBGG";
Map<String, Long> count =
        Arrays.stream(s.replaceAll("..", "$0#").split("#"))
                .collect(Collectors.groupingBy(a -> a,
                        Collectors.counting()));

count.forEach((k,v)-> System.out.println(k + " -> " + v));

印刷品

GG -> 2
BB -> 1
BG -> 1
GB -> 6

相关问题