Java 逐字比较两个字符串
嗯,我有两个字符串来逐个比较和检查它们是否匹配,如果碰到一个“-”,我需要计算序列中有多少个“-”,然后把它们放在一个组中,就像它们只有一个字符一样,并计算这组“-”中有多少个T和C。输出应为2.1T和2.2C,另一个为5.2CJava 逐字比较两个字符串,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();
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:-对于你遇到的任何代码问题,你应该首先在纸上写下你应该遵循的解决步骤。然后逐步将其转换为代码。理解问题和解决问题会更容易。感谢这些步骤,我试着一步一步地写下代码,但我太累了,我想错过了一些步骤,顺便说一句,我知道我不会用这些代码获得我期望的输出,所以我试着在这里发布一些代码,只是为了让你了解上下文。非常感谢你!