Java 逐字比较两个字符串

Java 逐字比较两个字符串,java,char,Java,Char,嗯,我有两个字符串来逐个比较和检查它们是否匹配,如果碰到一个“-”,我需要计算序列中有多少个“-”,然后把它们放在一个组中,就像它们只有一个字符一样,并计算这组“-”中有多少个T和C。输出应为2.1T和2.2C,另一个为5.2C String dna1 = "TC---CA--"; String dna2 = "TCTCCCACC"; char[] dnaChar = dna1.toCharArray(), dna2Char = dna2.toCharArray();

嗯,我有两个字符串来逐个比较和检查它们是否匹配,如果碰到一个“-”,我需要计算序列中有多少个“-”,然后把它们放在一个组中,就像它们只有一个字符一样,并计算这组“-”中有多少个T和C。输出应为2.1T和2.2C,另一个为5.2C

    String dna1 = "TC---CA--";  
    String dna2 = "TCTCCCACC";
    char[] dnaChar = dna1.toCharArray(), dna2Char = dna2.toCharArray();
    int cont = 0;
    int letters = 0;


    for (int i = 0; i < dnaChar.length; i++) {
        if (dnaChar[i] != dna2Char[i]) {
            int mut = i + 1;

            if (dna1.charAt(i) == '-') {

                cont++;
                mut -= cont;
                if (dna2.charAt(i) == 'C') {
                    letters++;
                }

                System.out.println(mut + "." + letters + dna2.charAt(i));
            } else {
                letters = 0;
                cont = 0;
                mut += 1;
                System.out.println("" + dna1.charAt(i) + " " + mut + " " + dna2.charAt(i));
            }
        }
    }
String dna1=“TC--CA--”;
字符串dna2=“tctccacc”;
char[]dnaChar=dna1.tocharray(),dna2Char=dna2.tocharray();
int cont=0;
整数字母=0;
对于(int i=0;i
输出 2.0T 2.1C 2.2C 4.3C 4.4C
我想要的是2.1T 2.2C 5.2C

您期望的输出永远不会从上述代码中获得。。因为在您的if构造中,每次在第一个字符串中遇到“-”时都会执行。。因此,您将有5个输出,而不是3个

第二,为了得到你需要的东西,你必须在这里做一些额外的工作

  • 首先,当第一个字符串中出现“-”时,需要将第二个字符串中的对应字符存储到某个变量中。。因为您需要它来检查连续字符
  • 其次,每次要获得一个“-”,请检查当前字符与前一个“-”匹配的最后一个字符。如果相同,则将计数增加1
  • 如果不一样,就打印你想要的。。并将计数重置为0
  • 一旦遇到第一个字符串中不包含“-”的字符,请打印当前字符和计数值,然后重置它们
您可以尝试按照我提到的步骤编写代码


*PS:-对于你遇到的任何代码问题,你应该首先在纸上写下你应该遵循的解决步骤。然后逐步将其转换为代码。理解问题和解决问题会更容易。

感谢这些步骤,我试着一步一步地写下代码,但我太累了,我想错过了一些步骤,顺便说一句,我知道我不会用这些代码获得我期望的输出,所以我试着在这里发布一些代码,只是为了让你了解上下文。非常感谢你!