Я поместил много выходных сообщений, чтобы попытаться следовать коду. Все выглядит так, как будто работает до тех пор, пока в первый раз не прочитает кнопку «7». Он сразу переходит к кнопке «8».
InputFileAnalyzer () создает исключение {
String expression = null;
StringTokenizer tokens;
buttonList = new ArrayList<String>();
labelList = new ArrayList<String>();
radioList = new ArrayList<String>();
// Create a File instance
File file = new File("input.txt");
// Create a Scanner for the file
Scanner input = new Scanner(file);
// Read a data from a file
while(input.hasNext()) {
expression = expression + " " + input.next();
}
tokens = new StringTokenizer(expression);
// lexical and syntax analysis by using StringTokenizer
while (tokens.hasMoreTokens()) { // hasn't gone thru all the "tokens"
token = tokens.nextToken(); // get next "token" from input string
if (token.equals("End.")) {
break;
}
while (tokens.hasMoreTokens()) {
token = tokens.nextToken();
if (token.equals("End;")) {
break;
} else if (token.equals("Window")) {
token = tokens.nextToken();
windowName = token.replaceAll("\"", "");
token = tokens.nextToken();
setWindowSize(token);
token = tokens.nextToken();
if (token.equals("Layout")) {
while (!token.contains(":")) {
token = tokens.nextToken();
if (token.contains("Flow")) {
windowLayout = 0;
} else if (token.equals("Grid")) {
panelLayout = 1;
setGridParameters(token);
}
}
}
} else if (token.equals("TextField")) {
while (!token.contains(";")) {
token = tokens.nextToken();
textWidth = Integer.parseInt(token.replaceFirst(";",""));
}
} else if (token.equals("Panel")) {
token = tokens.nextToken();
while (!token.contains(";")) {
token = tokens.nextToken();
if (token.contains("Flow")) {
panelLayout = 0;
} else if (token.contains("Grid")) {
panelLayout = 1;
setGridParameters(token);
}
}
} else if (token.equals("Button")) {
while (!token.contains(";")) {
token = tokens.nextToken();
buttonList.add(token.replaceAll("\"|;",""));
}
} else if (token.equals("Label")) {
while (!token.contains(";")) {
token = tokens.nextToken();
labelList.add(token.replaceAll("\"|;",""));
}
} else if (token.equals("Group")) {
token = tokens.nextToken();
while (!token.contains(";")) {
token = tokens.nextToken();
radioList.add(token.replaceAll("\"|;",""));
}
}
}
}
// Close the file
input.close();
Кнопка 7 вообще не отображается. Ниже приведен файл, из которого я читаю. Другая проблема заключается в том, что он держит первое ». Я не уверен, что это указывает на другую проблему. Заранее спасибо
Window "Calculator" (200, 200) Layout Flow:
Textfield 20;
Panel Layout Grid(4, 3, 5, 5):
Button "7";
Button "8";
Button "9";
Button "4";
Button "5";
Button "6";
Button "1";
Button "2";
Button "3";
Label "";
Button "0";
End;
End.
Это метод setGrid
public void setGrid(String token){
Matcher match = Pattern.compile("[0-9]+").matcher(token);
//System.out.println(token);
for(int i = 0; i< 4; i++){
// System.out.println(token + i);
if(match.find()){
if(i==0){
numberOfRows = Integer.parseInt(match.group());
System.out.println(numberOfRows + " rows " + token);
}else if(i==1){
numberOfColumns = Integer.parseInt(match.group());
System.out.println(numberOfColumns + " col " + token);
}else if(i==2){
hGaps = Integer.parseInt(match.group());
System.out.println(hGaps + " hgap " + token);
}else{
vGaps = Integer.parseInt(match.group());
System.out.println(vGaps + " vgap " + token);
}
}
}
}