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

标签 java string

当我输入字符串时
abc--rd
acdr--d

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

问题:即使只有一个字符串中有“-”,它也会进入 if 条件


使用注释部分测试的示例输出
阿彦--kr
--Ayankr
字符位置:0
st1: - st2: -
正确
字符位置: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");
      }
}

最佳答案

问题出在这里:

String st1=s1.length()<s2.length()?s1:s2;//larger string in st1
String st2=s1.length()>s2.length()?s1:s2;//smaller string in st2

您给出了两个长度相同的字符串,因此这两个条件都是假的,并且您将 st1st2 设置为 s2

我还将预防您将遇到的索引越界问题:

for(int i=0;i<st1.length();i++)
{
    if((st1.charAt(i)=='-') && (st2.charAt(i)=='-'))

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

关于java - 一个明确的字符出现在两个字符串的相同位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33230264/

相关文章:

ruby - 将 Ruby 字符串插入 Sqlite

.net - 为什么 string.IsNullOrWhiteSpace ("\0") 是假的

java - 如何创建包含目标/生成源中的类的 Spring Boot fat JAR

java - 编写 JVM 字节码程序来计算并打印斐波那契数列中的前 20 个数字

java - 如何在 Spring MVC 中构建动态 URL?

ruby - 如何编写捕获字符串的第一个非数字部分且不包含 3 个或更多空格的正则表达式?

javascript - jquery从两个区域中删除字符串部分

java - 我有 2 个 String Buffer 类的相同值对象。 String equals() 方法显示错误结果 为什么?

java - 如何将类名动态传递给 Testng XML 中的类标记

java - 从 jtextpane 突出显示特定行