Pagini recente » Cod sursa (job #436686) | Cod sursa (job #2188756) | Cod sursa (job #2403131) | Cod sursa (job #3245971) | Cod sursa (job #1360701)
import java.io.*;
import java.util.Scanner;
import java.util.regex.Pattern;
import java.io.PrintWriter;
// test solution. to be refactored
public class Main {
private static final int CURLY_CLOSED = 2;
private static final int COMMA = 5;
private static final int COLON = 6;
private static final int STRING = 7;
private static final int NUMBER = 8;
private static char token;
private static String result ="";
public static void main(String[] args)throws IOException
{ boolean keys = true;
Pattern splitRegex = Pattern.compile("\\s*+");
Scanner reader = new Scanner(new FileInputStream("convertor.in"));
PrintWriter writer = new PrintWriter("convertor.out");
reader.useDelimiter(splitRegex);
reader.skip("\\[");
token = reader.next().charAt(0);
while( reader.hasNext() ){
while(keys){
if(checkToken(token) == CURLY_CLOSED){
writer.write(result);
writer.println("");
result="";
keys = false;
token = reader.next().charAt(0);
reader.close();
reader = new Scanner(new FileInputStream("convertor.in"));
reader.useDelimiter(splitRegex);
reader.skip("\\[");
}
if(checkToken(token) == STRING ){
getString(reader, splitRegex);
}
if(checkToken(token) == COLON){
while( (checkToken(token) != COMMA) && (checkToken(token) != CURLY_CLOSED) ) {
token = reader.next().charAt(0);
}
}
if(checkToken(token) != CURLY_CLOSED){
token = reader.next().charAt(0);
}
}
token = reader.next().charAt(0);
if(checkToken(token) == COLON){
token = reader.next().charAt(0);
getString(reader, splitRegex);
if(checkToken(token) == NUMBER){
while(checkToken(token) == NUMBER){
result = result + token;
token = reader.next().charAt(0);
}
result = result + ",";
}
}
if(checkToken(token) == CURLY_CLOSED){
writer.write(result);
writer.println("");
result="";
}
}
writer.close();
reader.close();
}
private static void getString(Scanner reader, Pattern splitRegex){
if(checkToken(token) == STRING ){
token = reader.next().charAt(0);
reader.useDelimiter("");
while(checkToken(token) != STRING){
result = result + token;
token = reader.next().charAt(0);
}
result = result + ",";
reader.useDelimiter(splitRegex);
}
}
private static int checkToken(char token){
switch (token) {
case '}':
return CURLY_CLOSED;
case ',':
return COMMA;
case '"':
return STRING;
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
case '-':
return NUMBER;
case ':':
return COLON;
default: return 12;
}
}
}