我有一个代码,应该得到一个输入,从第一个输入得到最后两个字母,然后匹配第二个输入与最后两个字母(例如,glam, slam)。问题是,它一直转到else语句,而不是if语句。模式的构造方式是否存在问题?
import java.util.regex.Pattern;
import java.util.regex.Matcher;
import java.util.Scanner;
public class MatchyPattern {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.print("Enter the first word: ");
String fw;
fw = s.nextLine();
String lastTwo = fw.substring(fw.length() - 2);
char[] sub = lastTwo.toCharArray();
var p = Pattern.compile("[a-zA-Z]{1,2}" + sub + "]");
System.out.print("Enter the second word: ");
String sw;
sw = s.nextLine();
Matcher m = p.matcher(sw);
if (m.matches()){
System.out.println(fw + " rhymes with " + sw);
}else{
System.out.println("I'm not sure! Sorry!");
}
}
}
看来你不明白[C@37f8bb67
(@ variables后的部分)是什么,你天真地试图"关闭";支架。你看到的是默认数组toString
,它在代码中没有任何意义
你可以用最后2个字符(作为字符串)填充模式
var p = Pattern.compile("[a-zA-Z]{1,2}" + lastTwo);