public
class
StateMachine {
public
static
void
checkStateA(String n) {
if
(n.length() ==
0
) {
System.out.println(
"String not accepted"
);
}
else
{
if
(n.charAt(
0
) ==
'a'
) {
stateB(n.substring(
1
));
}
else
{
stateF(n.substring(
1
));
}
}
}
public
static
void
stateB(String n) {
if
(n.length() ==
0
) {
System.out.println(
"String not accepted"
);
}
else
{
if
(n.charAt(
0
) ==
'a'
) {
stateC(n.substring(
1
));
}
else
{
System.out.println(
"String not accepted"
);
}
}
}
public
static
void
stateC(String n) {
if
(n.length() ==
0
) {
System.out.println(
"String not accepted"
);
}
else
{
if
(n.charAt(
0
) ==
'a'
) {
stateD(n.substring(
1
));
}
else
{
System.out.println(
"String not accepted"
);
}
}
}
public
static
void
stateD(String n) {
if
(n.length() ==
0
) {
System.out.println(
"String not accepted"
);
}
else
{
if
(n.charAt(
0
) ==
'a'
) {
stateE(n.substring(
1
));
}
else
{
System.out.println(
"String not accepted"
);
}
}
}
public
static
void
stateE(String n) {
if
(n.length() ==
0
) {
System.out.println(
"String accepted"
);
}
else
if
(n.charAt(
0
) ==
'a'
) {
stateE(n.substring(
1
));
}
else
if
(n.charAt(
0
) ==
'b'
) {
stateF(n.substring(
1
));
}
}
public
static
void
stateF(String n) {
if
(n.length() ==
0
) {
System.out.println(
"String not accepted"
);
}
else
{
if
(n.charAt(
0
) ==
'b'
) {
stateG(n.substring(
1
));
}
else
{
System.out.println(
"String not accepted"
);
}
}
}
public
static
void
stateG(String n) {
if
(n.length() ==
0
) {
System.out.println(
"String not accepted"
);
}
else
{
if
(n.charAt(
0
) ==
'b'
) {
stateH(n.substring(
1
));
}
else
{
System.out.println(
"String not accepted"
);
}
}
}
public
static
void
stateH(String n) {
if
(n.length() ==
0
) {
System.out.println(
"String not accepted"
);
}
else
{
if
(n.charAt(
0
) ==
'b'
) {
stateQ(n.substring(
1
));
}
else
{
System.out.println(
"String not accepted"
);
}
}
}
public
static
void
stateQ(String n) {
if
(n.length() ==
0
) {
System.out.println(
"String accepted"
);
}
else
{
if
(n.charAt(
0
) ==
'b'
) {
stateQ(n.substring(
1
));
}
else
if
(n.charAt(
0
) ==
'a'
) {
stateB(n.substring(
1
));
}
}
}
public
static
void
main(String[] args) {
String n =
"aaaabbbbbaaaa"
;
checkStateA(n);
n =
"aaaabbb"
;
checkStateA(n);
}
}