题目内容
代码部分
package lqb;
import java.util.Scanner;
public class Test {
public static void main(String []args) {
Scanner sc=new Scanner(System.in);
String str0,str1;
str0=sc.nextLine();//字符串L
str1=sc.nextLine();//字符串S
String[] arr0=str0.split("");
String[] arr1=str1.split("");
String[] arr2=new String[str1.length()];//和字符串S相匹配的等长字符串数组
for (int i = 0; i < arr1.length; i++) {
switch (arr1[i]) {
case "A": {
arr2[i]="T";break;
}
case "G":{
arr2[i]="C";break;
}
case "T":{
arr2[i]="A";break;
}
case "C":{
arr2[i]="G";break;
}
default:
throw new IllegalArgumentException("Unexpected value: " + "错误输入!");
}
}
int first=0;//arr0出现和arr2一样的子串的第一个基因的位置
for(int j=0;j<=arr0.length-arr2.length;j++) {
int j1=j;
int sum=0;//记载相同基因的个数
for (int i = 0; i < arr2.length; i++) {
if(arr0[j1].equals(arr2[i])) {
j1++;
sum++;
}
else {
break;
}
}
if(sum==arr2.length) {
first=j;
System.out.println(first);
break;
}
}
sc.close();
}
}
总结
Java中比较字符串是否相等不能用“==”,因为字符串类型是对象,此方法比较的是对象的内存地址。要实现对象的比较要用boolean equals(String)。