Cod sursa(job #1359642)

Utilizator devLucian93Lucian Alexandru devLucian93 Data 25 februarie 2015 00:34:56
Problema Convertor Scor 0
Compilator java Status done
Runda rosedu_cdl_2015 Marime 4.49 kb
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.in"));
		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.in"));
					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;
	}

	}
	
	
}