Cod sursa(job #1355954)

Utilizator devLucian93Lucian Alexandru devLucian93 Data 23 februarie 2015 02:22:47
Problema Convertor Scor 50
Compilator java Status done
Runda rosedu_cdl_2015 Marime 2.17 kb

import java.io.*;
import java.util.Scanner;

// just a test solution. to be refactored and commented later

public class Main {
 static PrintWriter writer;
 private static boolean first = true;
 private static int parity = 1;
 static String prima="";
	public static void main(String[] args)throws IOException
	{  // long startTime = System.currentTimeMillis();

		
		Scanner reader = new Scanner(new FileInputStream("convertor.in"));
		writer = new PrintWriter("convertor.out");
	    reader.skip("\\[");
		reader.useDelimiter("}");
		
		while(reader.hasNext()){
			parseObjects(reader.next());
			writer.println("");
			if(first == true){
				first = false;	
				writer.write(prima);
				writer.println("");
				
			}
			
			parity = 1;
		    
		}
    
		writer.close();
		reader.close();
		//long endTime = System.currentTimeMillis();
		//System.out.println("That took " + (endTime - startTime) + " milliseconds");
	}
	
	private static void parseObjects(String object) throws IOException{
		Scanner objectReader = new Scanner(object);
	    objectReader.useDelimiter(",");
	    while(objectReader.hasNext()){
	    	parseKeysAndValues(objectReader.next());
	    }
	    
	    objectReader.close();
	}
	
	private static void parseKeysAndValues(String keyAndValue) throws IOException{
		Scanner keyAndValueReader = new Scanner(keyAndValue);
		keyAndValueReader.useDelimiter(":");
		
		
		while(keyAndValueReader.hasNext()){
			String result = keyAndValueReader.next();
			
			if( (first == false)&& (parity %2!=0) ){
				if(keyAndValueReader.hasNext()){
					result = keyAndValueReader.next();
					parity++;
				}
			}
			
			
			result = result.replaceAll("\"|\\{|\\]","");
			result = result.trim();
			if(!result.isEmpty()){
				//System.out.println(result);
				if( (first == true)&&(parity %2!=0) ){
					writer.write(result);
					writer.write(",");
					
					
				}else if(first==true){
						prima = prima+result+",";
					
				}
				
				if( (first == false)&&(parity%2==0) ){
					writer.write(result);
					writer.write(",");
					
				}
		
			}
			parity++;
			
		}
		
		
	
		keyAndValueReader.close();
	}



 
}