Cod sursa(job #1350942)

Utilizator lavinia.tacheLavinia Tache lavinia.tache Data 21 februarie 2015 00:30:03
Problema Convertor Scor 10
Compilator java Status done
Runda rosedu_cdl_2015 Marime 2.69 kb
import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.Stack;

class Converter {
	ArrayList<String> keys = new ArrayList<String>();
	ArrayList<String> values = new ArrayList<String>();
//	Stack<Character> stack = new Stack<Character>();
	String s = "";
	public void convertingFile( Scanner reader) throws IOException{
		PrintWriter writer = new PrintWriter("convertor.out","UTF-8");
		int contor = 0;
		while(reader.hasNextLine()){
			contor++;
			String concat = "";
			String stringLine = reader.nextLine();
			char [] line = stringLine.toCharArray();
			for(int i = 0; i < line.length; i++){
//				System.out.println("s = " + s);
				if( line[i] == '{' || line[i] == '['){
					s += line[i];
//					stack.push(line[i]);
				}
				if( line[i] == '\"' && s.charAt(s.length()-1) != '\"'){
					s += line[i];
//					stack.push(line[i]);
				}
				else{
					if( i > 1 && Character.isLetterOrDigit(line[i-1]) && Character.isLetterOrDigit(line[i+1]) && line[i] == ' '){
						concat += " ";
					}
					if(Character.isLetterOrDigit(line[i])){
						concat += line[i];
					}
					else{
						if(line[i] == '\"' && s.charAt(s.length()-1) == '\"'){
//							System.err.println("s = " + s);
//							System.err.println("lungime s = " + s.length());
							s = s.substring(0, s.length()-1);
//						stack.pop();
						}
					}
				}
				if(line[i] == ':'){
					if(keys.contains(concat) == false){
						keys.add(concat);
					}
					concat = "";
				}
				if(line[i] == ',' && s.charAt(s.length()-1) != '}'){
					values.add(concat);
					concat = "";
				}
				if(line[i] == '}'){
					s += '}';
//					stack.push('}');
				}
				if(line[i] == ']'){
					s+=']';
				//	stack.push(']');
				}
				if(( line[i] == ',' && s.charAt(s.length()-1) == '}' )|| ( line[i] != ',' && s.charAt(s.length()-1) == ']') ){
					values.add(concat);
					concat = "";
					values.add("*");
					s = s.substring(0, s.length()-1);
				}
			}
			
		}
//		System.out.println("contor = " + contor);
		for(int i = 0 ; i < keys.size(); i++){
			writer.print(keys.get(i) + ",");
		}
		writer.println();
		for(int i = 0; i < values.size(); i++){
			if(values.get(i).equals("*")){
				writer.println();
			}
			else{
				writer.print(values.get(i) + ",");
			}
			
		}
		writer.close();
	}

}
public class Main{
	public static void main(String [] args){
		try{
			InputStream inputStream = new FileInputStream("convertor.in");
			InputStreamReader inputStreamReader = new InputStreamReader(inputStream,"UTF-8");
			Scanner reader = new Scanner(inputStreamReader);
			
			Converter converting = new Converter();
			converting.convertingFile(reader);
			
		}catch(Exception fileException){
			System.err.println("File not found exception");
		}
	}
	
}