Cod sursa(job #1342293)

Utilizator raduneagoeNeagoe Radu raduneagoe Data 13 februarie 2015 19:24:43
Problema Convertor Scor 50
Compilator java Status done
Runda rosedu_cdl_2015 Marime 2.57 kb
import java.io.*;
import java.util.NoSuchElementException;
import java.util.Scanner;

public class Main
{
	public static int charAppears(String s, char ch)
	{
		int counter = 0;
		for(int i = 0; i < s.length(); i++)
		{
			if(s.charAt(i) == ch)
				counter++;
		}
		s = null;
		return counter;
	}
	
	public static String deleteChar(String s)
	{	
		while(s.charAt(0) == ' ' || s.charAt(0) == '"' || s.charAt(0) == '{' || s.charAt(0) == ','|| s.charAt(s.length() - 1) == ' ' || s.charAt(s.length() - 1) == '"' || s.charAt(s.length() - 1) == '}' || s.charAt(s.length() - 1) == ',')
		{
			if(s.charAt(0) == ' ' || s.charAt(0) == '"' || s.charAt(0) == '{' || s.charAt(0) == ',')
				s = s.substring(1);

			if(s.charAt(s.length() - 1) == ' ' || s.charAt(s.length() - 1) == '"' || s.charAt(s.length() - 1) == '}' || s.charAt(s.length() - 1) == ',')
				s = s.substring(0,s.length() - 1);
		}
		return s;
	}
	
	public static void main(String[] args) throws IOException
	{
		Scanner sc = new Scanner(new FileInputStream("convertor.in"));
		StringBuilder JSON = new StringBuilder(sc.useDelimiter("},").next().replaceAll("(\\r|\\n)", ""));
		PrintWriter writer = new PrintWriter("convertor.out");

		// prima linie
		int a = JSON.indexOf("\"") + 1, b = JSON.indexOf(":") - 1;
		int m = charAppears(JSON.toString(), ',') + 1; //nr virgulelor ne da nr coloanelor
		
		for (int i = 0; i < m; i++)
		{
			try
			{
				writer.print(deleteChar(JSON.substring(a, b)) + ",");
			}catch(IndexOutOfBoundsException e)
			{
				a = JSON.lastIndexOf("\"");
				writer.print(deleteChar(JSON.substring(a, b)) + ",");
			}
			
			a = JSON.indexOf(",", a) + 1;
			b = JSON.indexOf(":", b + 2) - 1;
		}
		sc.close();
		
		//urmatoarele linii
		Scanner sc2 = new Scanner(new FileInputStream("convertor.in"));
		while(sc2.hasNextLine())
		{
			try
			{
				JSON.replace(0, JSON.length(), sc2.useDelimiter("},").next().replaceAll("(\\r|\\n)", ""));
			}catch(NoSuchElementException e)
			{
				//prind eroarea deoarece ultima linie din fisierul de intrare se termina cu "}", nu cu "}," ca si restul
			}
			
			writer.println();
			a = b = 0;
			for(int j = 0; j < m; j++)
			{
				a = JSON.indexOf(":", a) + 1;
				b = JSON.indexOf(",", b) + 1;
				try //pe ultima linie nu voi mai avea "}," si va da eroare
				{
					writer.print(deleteChar(JSON.substring(a, b)) + ",");
				}catch (StringIndexOutOfBoundsException e)
				{
					b = JSON.lastIndexOf("\"");
					writer.print(deleteChar(JSON.substring(a, b)) + ",");
				}
			}
		}
		sc2.close();
		writer.close();
	}
}