当我输入字符串时
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");
}
}
答案 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");
}
}