一个明确的字符出现在同一位置两个字符串

时间:2015-10-20 07:14:05

标签: java string

当我输入字符串时
ABC - RD
ACDR - d

它检查两个字符串中的第一个实例 - 然后输入if条件(注释为MARK1)

问题:即使其中只有一个字符串中有' - ',它也会输入if条件


使用注释部分测试的样本输出
阿燕 - KR
--Ayankr
char Pos:0
st1: - st2: -
真正
char Pos:1
st1: - st2: -
真正
相同的模式

import java.util.Scanner;

public class stringpattern{
      public static boolean stringPattern(String s1,String s2){
            String st1=s1.length()<s2.length()?s1:s2;//larger string in st1
            String st2=s1.length()>s2.length()?s1:s2;//smaller string in st2
            boolean b=false;
            //int cou=0;
            String s=st2.substring(st1.length());//taking extra string of st2 in s
            if(s.contains("-"))//false if extra string contains '-'
                  b=false;
            else{

                  for(int i=0;i<st1.length();i++)
                  {
                        if((st1.charAt(i)=='-') && (st2.charAt(i)=='-'))//MARK1
                        {
            //It enters the if condition even if there is a '-' in only one string

                              //System.out.println("Char Pos: "+cou);
                              //System.out.println("st1: "+st1.charAt(i)"+" st2: "+st2.charAt(i));
                              b=true;


                              //System.out.println(b);  
                        }
                       // cou++;
                  }

            }
            return b;
      }
      public static void main(String[] args) {
            Scanner s=new Scanner(System.in);
            String s1=s.next();
            String s2=s.next();
            boolean b=stringPattern(s1,s2);
            if(b==true)
                  System.out.println("same pattern");
            else
                  System.out.println("different pattern");
      }
}

2 个答案:

答案 0 :(得分:3)

问题出在这里:

   $('input[type=search]').on('click', function () {
       return false;
   });

您提供两个长度相同的字符串,因此这两个条件均为false,您将String st1=s1.length()<s2.length()?s1:s2;//larger string in st1 String st2=s1.length()>s2.length()?s1:s2;//smaller string in st2 st1都设置为st2

我还会预先排除你将会遇到的索引问题:

s2

因为st1应该是更长的字符串(根据你,我不确定当你解决其他问题时你将实现什么),你将达到一个点i> gt = = st2.length(),你应该只搜索较短字符串的末尾以避免这种情况。

答案 1 :(得分:0)

@moreON解释了这个问题。

更正后的计划在这里。 问题1:三元运算符是问题 问题2:if的else情况应该更新b = false如果后面的字符串不匹配

import java.util.Scanner;

public class stringpattern{
      public static boolean stringPattern(String s1,String s2){
            String st1=s1.length()<s2.length()?s2:s1;//larger string in st1
            String st2=s1.length()>s2.length()?s1:s2;//smaller string in st2
            boolean b=false;
            //int cou=0;
            String s=st2.substring(st1.length());//taking extra string of st2 in s
            if(s.contains("-"))//false if extra string contains '-'
                  b=false;
            else{

                  for(int i=0;i<st1.length();i++)
                  {
                        if((st1.charAt(i)=='-') && (st2.charAt(i)=='-'))//MARK1
                        {
            //It enters the if condition even if there is a '-' in only one string

                              //System.out.println("Char Pos: "+cou);
                              //System.out.println("st1: "+st1.charAt(i)"+" st2: "+st2.charAt(i));
                              b=true;


                              //System.out.println(b);  
                        }
                        else{b=false;}
                       // cou++;
                  }

            }
            return b;
      }
      public static void main(String[] args) {
            Scanner s=new Scanner(System.in);
            String s1=s.next();
            String s2=s.next();
            boolean b=stringPattern(s1,s2);
            if(b==true)
                  System.out.println("same pattern");
            else
                  System.out.println("different pattern");
      }
}