急!!关于JAVA的simple pattern-matching

2024-11-19 14:26:15
推荐回答(3个)
回答1:

//i've worked it out see as follows

import java.util.Scanner;
import java.util.regex.Pattern;

public class PatternTest {

static int am = 0;
static int bm = 0;
static int cm = 0;
static Scanner san = new Scanner(System.in);
static String sp = "[^bc]*a*[^c]*b*c*[^ab]*";

// am + bm == cm
public static boolean matchesPattern1(String input){
am = getCharNum('a', input);
bm = getCharNum('b', input);
cm = getCharNum('c', input);
return (am + bm) == cm;

}

//
public static boolean matchesPattern2(String input){
if(! matchesPattern1(input)) {
return false;
} else {
return Pattern.matches(sp, input);

}

}

public static boolean matchesPattern3(String input){
matchesPattern1(input);
if(am != cm) {
return false;
} else {
return Pattern.matches(sp, input);
}
}

public static void testAll(String input) {
System.out.println("Input: " + input);
System.out.println("matches Pattern1? : " + PatternTest.matchesPattern1(input));
System.out.println("matches Pattern2? : " + PatternTest.matchesPattern2(input));
System.out.println("matches Pattern3? : " + PatternTest.matchesPattern3(input));
}

public static void main(String[] args) {
for(int i = 0;i < 5; i ++) {
System.out.print("Input String " + (i + 1) + " :");
String input = san.next();
PatternTest.testAll(input);
}
}

public static int getCharNum(char c, String input){
int num = 0;
char [] chs = input.toCharArray();
for(char ct: chs) {
if(ct == c){
num ++;
}
}
return num;
}

}

回答2:

其实楼主的题三种方法是大同小异的 只是顺序和个数的问题 不过我刚学习Java 很多东西不清楚 所以帮不了忙(用c的话就好写了)
回答的人少估计因为是英文的关系 那我就帮着简单译下不到位的地方望指出 希望有高手回答 我也学习学习!
写3种方法 都要输入字符串 看是否符合要求 并返回Boolean值(FALSE,TRUE)
名字和要求分别为
matchesPattern1() //格式:anbmc(n + m) (n ≥ 0 m ≥ 0) (即c //的个数等于ab的个数和)
// 其中m和n可能相等 a b c的顺序没有要求
matchesPattern2() //格式:anbmc(n + m) (n ≥ 0 m ≥ 0) (即c的个//数等于ab的个数和)
// 但是这次做了顺序的要求(必须abc依次出现)问可不可以用一个或多
//个布尔变量“flags”测试这个顺序 仍然有mn可能相等
matchesPattern3() //格式:anb*cn (n > 0. (n,*都是次方))*的意思就//是任意个
//仍然有顺序的要求(必须是abc依次出现)

最后的要求:写main方法使输入5个字符串(一次一个)程序要可以比较并输出你的串匹配哪个模式

回答3:

e文要很好啊,啃的头痛,先做个标记先,有空来看看吧