public
class
BooleanExp {
public
static
void
main(String[] args) {
String exp1 =
"x<0 and x<-5 and x>100"
;
String exp2 =
"x<0 and x<5"
;
String exp3 =
"x>5 and x<0"
;
String exp4 =
"x<0 or x>5"
;
String exp5 =
"x>5 and x<0 and x<100"
;
String exp6 =
"x<-100 and x>100"
;
GetDomain(exp1);
GetDomain(exp2);
GetDomain(exp3);
GetDomain(exp4);
GetDomain(exp5);
GetDomain(exp6);
}
public
static
void
GetDomain(String exp) {
if
(exp.contains(
"or"
)) {
System.out.println(
"true"
);
return
;
}
String subExp[] = exp.split(
" "
);
int
domain[] =
new
int
[
10
];
String strDomain =
""
;
Boolean flag =
true
;
int
value;
for
(
int
i =
0
; i < subExp.length; i++) {
if
(!subExp[i].equals(
"and"
)) {
if
(subExp[i].charAt(
1
) ==
'<'
) {
if
(subExp[i].charAt(
0
) ==
'x'
) {
if
(strDomain.isEmpty())
strDomain =
"<"
+ subExp[i].substring(
2
);
else
if
(strDomain.charAt(
0
) ==
'>'
&& Integer.parseInt(subExp[i].substring(
2
)) < Integer
.parseInt(strDomain.substring(
1
))) {
flag =
false
;
break
;
}
}
else
{
if
(strDomain.isEmpty())
strDomain =
">"
+ subExp[i].substring(
2
);
else
if
(strDomain.charAt(
0
) ==
'<'
&& Integer.parseInt(subExp[i].substring(
2
)) > Integer
.parseInt(strDomain.substring(
1
))) {
flag =
false
;
break
;
}
}
}
else
if
(subExp[i].charAt(
1
) ==
'>'
) {
if
(subExp[i].charAt(
2
) ==
'x'
) {
if
(strDomain.isEmpty())
strDomain =
"<"
+ subExp[i].substring(
2
);
else
if
(strDomain.charAt(
0
) ==
'>'
&& Integer.parseInt(subExp[i].substring(
2
)) < Integer
.parseInt(strDomain.substring(
1
))) {
flag =
false
;
break
;
}
}
else
{
if
(strDomain.isEmpty())
strDomain =
">"
+ subExp[i].substring(
2
);
else
if
(strDomain.charAt(
0
) ==
'<'
&& Integer.parseInt(subExp[i].substring(
2
)) > Integer
.parseInt(strDomain.substring(
1
))) {
flag =
false
;
break
;
}
}
}
}
}
System.out.println(flag);
}
}