-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathValidator.java
More file actions
141 lines (119 loc) · 4.23 KB
/
Validator.java
File metadata and controls
141 lines (119 loc) · 4.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
package sample;
public class Validator {
public boolean isValid(String input){
if (subStrCounter(input, "(") != subStrCounter(input, ")")){
return false;
}
int brackets = 0;
for (int i = 0; i < input.length(); i++){
if (input.charAt(i) == '('){
brackets++;
} else if (input.charAt(i) == ')'){
brackets--;
}
if (brackets < 0){
return false;
}
}
char[] symbols = new char[]{'+', '-', '*', '/', '^', '.'};
char[] nums = new char[]{'1', '2', '3', '4', '5', '6','7', '8', '9', '0'};
char[] pChars = new char[]{'1', '2', '3', '4', '5', '6','7', '8', '9', '0', '+', '-', '*', '/', '^', '.', '(', ')'};
for (int i = 0; i < input.length(); i++){
for (char symbol1 : symbols){
if (input.charAt(i) == symbol1){
for (char symbol2 : symbols){
if (input.charAt(i + 1) == symbol2){
return false;
}
}
if (i == 0){
return false;
}
if (symbol1 == '.'){
if (i + 1 < input.length()) {
if (input.charAt(i + 1) == '(' || input.charAt(i + 1) == ')') {
return false;
}
}
if (input.charAt(i - 1) == ')' || input.charAt(i - 1) == '(') {
return false;
}
} else {
if (i + 1 < input.length()) {
if (input.charAt(i + 1) == ')') {
return false;
}
}
if (input.charAt(i - 1) == '(') {
return false;
}
}
}
}
for (char num : nums){
if (input.charAt(i) == num){
if (i + 1 < input.length()) {
if (input.charAt(i + 1) == '(') {
return false;
}
}
if (i > 0){
if (input.charAt(i - 1) == ')') {
return false;
}
}
}
}
boolean isPChar = false;
for (char pChar : pChars){
if (input.charAt(i) == pChar) {
isPChar = true;
break;
}
}
if (!isPChar){
return false;
}
}
return true;
}
public boolean isFinished(String input){
if (containsBrackets(input)){
return false;
} else {
int c = 0;
for (String symbol : new String[]{"+", "-", "*", "/", "^"}) {
c += subStrCounter(input, symbol);
}
System.out.println(input + " | " + c);
return !(c > 1);
}
}
public boolean containsBrackets(String input){
return input.contains("(");
}
public boolean containsCaret(String input){
return input.contains("^");
}
public boolean containsMultCarets(String input){
return (subStrCounter(input, "^") > 1);
}
public boolean containsMultDiv(String input){
return (input.contains("*") || input.contains("/"));
}
public boolean containsAddSub(String input){
return (input.contains("+") || input.contains("-"));
}
private int subStrCounter(String str, String findStr){
int lastIndex = 0;
int count = 0;
while(lastIndex != -1){
lastIndex = str.indexOf(findStr,lastIndex);
if(lastIndex != -1){
count ++;
lastIndex += findStr.length();
}
}
return count;
}
}