Cod sursa(job #1361923)

Utilizator Simona_RoboiuRoboiu Simona Alina Simona_Roboiu Data 26 februarie 2015 01:45:48
Problema Convertor Scor 50
Compilator java Status done
Runda rosedu_cdl_2015 Marime 2.72 kb
/* Roboiu Simona Alina */

import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.StringTokenizer;

public class Main {
    int k = 0;
    ArrayList<String> key = null;
    ArrayList<String> value = null;
    String seq = null;
     
    public static void main(String args[]) {
        Main c = new Main();
         
        String input = "convertor.in";
        c.readDataFromInputFile(input);
         
        String output = "convertor.out";
        c.writeData(output);
    }
     
    public void readDataFromInputFile(String filename) {
        Scanner scanner = null;
        String line = null;
        key = new ArrayList<String>();
        value = new ArrayList<String>();
        seq = new String();
         
        try {       
            scanner = new Scanner(new FileInputStream(filename));
             
            while(scanner.hasNextLine()) {
                line = new String(scanner.nextLine());
                conversionLine(line);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        scanner.close();
    }
     
    public void conversionLine(String line) {
        String delimiters = ",{}[]";
        line = line.replace("\"", "");
         
        if(!line.contains("}")) {
            seq = seq.concat(line);
            return;
        }
        String[] half = line.split("}");
        seq = seq.concat(half[0]);
        StringTokenizer token = new StringTokenizer(seq, delimiters);
        while(token.hasMoreTokens()) {
            String pair = token.nextToken();
            if(pair.trim().equals(""))
                continue;
            String[] words = pair.trim().split(":");
            if(k == 0)
                key.add(words[0].trim());
            value.add(words[1].trim());
        }
         
        if (k == 0) {
            k = 1;
        }
        seq = new String(half[1]);
    }
     
    public void writeData(String filename) {
        FileWriter f = null;
        PrintWriter file = null;
 
        try {
 
            f = new FileWriter(filename);
            file = new PrintWriter(f);
             
            int nr = key.size();
             
            for(int i = 0; i < nr; i++)
                file.print(key.get(i)+",");
            file.println();
             
            for(int i = 0; i < value.size(); i++) {
                file.print(value.get(i)+",");
                if((i + 1) % nr == 0)
                    file.println();
            }
             
        } catch (Exception e) {
            e.printStackTrace();
        }
        file.close();
    }
}