Pagini recente » Cod sursa (job #3224107) | Cod sursa (job #1139415) | Cod sursa (job #2649639) | Cod sursa (job #785370) | Cod sursa (job #1359641)
import java.io.*;
import java.util.Scanner;
import java.io.PrintWriter;
// test solution. to be refactored
public class Main {
private static final int CURLY_OPEN = 1;
private static final int CURLY_CLOSED = 2;
//private static final int SQUARED_OPEN = 3;
//private static final int SQUARED_CLOSED = 4;
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 String result ="";
private static boolean keys = true;
public static void main(String[] args)throws IOException
{
Scanner reader = new Scanner(new FileInputStream("convertor.txt"));
PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter("convertor.out")));
reader.useDelimiter("\\s*");
reader.skip("\\[");
char token = reader.next().charAt(0);
while( reader.hasNext() ){
while(keys){
if(checkToken(token) == CURLY_OPEN){
if(reader.hasNext()){
token = reader.next().charAt(0);
}
}
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.txt"));
reader.useDelimiter("\\s*");
reader.skip("\\[");
}
if(checkToken(token) == STRING ){
reader.useDelimiter("\"");
if(reader.hasNext()){
result = result + reader.next() + ",";
}
reader.useDelimiter("\\s*");
token = reader.next().charAt(0);
token = reader.next().charAt(0);
}
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) == CURLY_OPEN){
while(checkToken(token) != COLON){
token = reader.next().charAt(0);
}
}
if(checkToken(token) == COLON){
token = reader.next().charAt(0);
if(checkToken(token) == STRING ){
reader.useDelimiter("\"");
// if(reader.hasNext()){
result = result + reader.next() + ",";
// }
reader.useDelimiter("\\s*");
token = reader.next().charAt(0);
}
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="";
}
/* if(checkToken(token) == CURLY_OPEN){
if(reader.hasNext()){
token = reader.next().charAt(0);
}
}
if(checkToken(token) == CURLY_CLOSED){
writer.write(result);
writer.println("");
result="";
}
if(checkToken(token) == STRING ){
reader.useDelimiter("\"");
if(reader.hasNext()){
result = result + reader.next() + ",";
}
reader.useDelimiter("\\s*");
token = reader.next().charAt(0);
token = reader.next().charAt(0);
}
if(checkToken(token) == COLON){
token = reader.next().charAt(0);
if(checkToken(token) == STRING ){
reader.useDelimiter("\"");
if(reader.hasNext()){
result = result + reader.next() + ",";
}
reader.useDelimiter("\\s*");
token = reader.next().charAt(0);
}
if(checkToken(token) == NUMBER){
while(checkToken(token) == NUMBER){
result = result + token;
token = reader.next().charAt(0);
}
result = result + ",";
}
}
*/
}
writer.close();
reader.close();
}
private static int checkToken(char token){
switch (token) {
case '{':
return CURLY_OPEN;
case '}':
return CURLY_CLOSED;
//case '[':
// return SQUARED_OPEN;
//case ']':
// return SQUARED_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;
}
}
}