识别字符串对之间差异的程序

时间:2018-04-13 11:33:46

标签: java string compare character

我的问题是我需要以视觉上引人注目的方式识别两个给定字符串之间不同的字符。在两行上输出两个输入字符串,然后使用句点(对于相同的字符)和星号(对于不同的字符)识别下面一行的差异。例如:

ATCCGCTTAGAGGGATT
GTCCGTTTAGAAGGTTT
*....*.....*..*..

我曾尝试互相写两个字符串,但我不知道如何让程序检查字符串中的每个字符并查看是否匹配

这是我到目前为止所做的:/

System.out.println("String 1: ");
String var1 = Scanner.nextLine();

System.out.println("String 2: ");
String var2 = Scanner.nextLine();

if (same (var1, var2))
    System.out.println(".........");
else
    System.out.println("********");

public static boolean same (String var1, String var2){
    if (var1.equals(var2))
    {
        return true;        
    }
    else
    {
        return false;
    }

任何人都可以帮我吗?

2 个答案:

答案 0 :(得分:1)

你需要遍历你的字符串并逐个比较字符。要浏览列表,您可以进行for循环。使用int作为计数器并使用方法Documentation来获取字符串大小。

for(int i=0; i<string1.length(); i++ {
    // do stuff
}

然后,由于您有一个计数器遍历字符串的所有位置,您可以使用方法length()

获取此字符串中特定位置的字符
char char1 = string1.charAt(i);

然后比较角色以检查它们是否相同。如果他们打印点.,如果他们不打印星号*

if(char1 == char2) {
    System.out.print(".");
} else {
    System.out.print("*");
}

在上面的部分中,我认为你的两个字符串具有相同的大小。如果不是这样,你可以先确定哪一个是最小的(哪个是最大的):

String smallestString;
String biggestString;
if(string1.size() > string2.sise()) {
     smallestString = string2;
     biggestString = string1;
else { 
     smallestString = string1;
     biggestString = string2;
}

然后让你的for循环遍历最小的String,否则你将面对charAt()

for(int i=0; i<smallestString.length(); i++ {
    // do stuff
}

这个for循环的结尾打印了留在最大字符串

中的字符的星号
for(int j=smallestString.length(); j<biggestString.length(); j++) {
    System.out.print("*");
}

答案 1 :(得分:-1)

这就是我想出来的。告诉你有更好的方法来做到这一点,我只是用你提出的问题写出来。

public class AskBetterQuestion{

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String w1="ATCCGCTTAGAGGGATT";
        String w2="GTCCGTTTAGAAGGTTT";


        char[] first  = w1.toCharArray();
        char[] second = w2.toCharArray();

        int minLength = Math.min(first.length, second.length);
        char[] out=new char[minLength];

        for(int i = 0; i < minLength; i++)
        {
                if (first[i] != second[i])
                {
                    out[i]='.';
                }
                else out[i]='*';
        }

            System.out.println(w1);
            System.out.println(w2);
            System.out.print(out);

    }

}