Cod sursa(job #1345679)

Utilizator mihaitza22Mihai Nan mihaitza22 Data 17 februarie 2015 19:56:15
Problema Convertor Scor 40
Compilator java Status done
Runda rosedu_cdl_2015 Marime 3.25 kb
/*
 * Realizat pentru inscrierea la CDL
 * Nan Mihai - Facultatea de Automatica si Calculatoare
 * Grupa - 324CC
 */
 
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Scanner;
import java.util.Set;
import java.util.StringTokenizer;
import java.util.Vector;
   
/**
 *
 * @author Nan Mihai
 */
public class Main {
    ArrayList<ArrayList<String>> dictionar;
    int nrE = 0;
       
    public Main() {
        dictionar = new ArrayList<ArrayList<String>>();
    }
       
    public static void main(String args[]) throws FileNotFoundException {
        Main c = new Main();
        c.read("convertor.in");
        c.write("convertor.out");
    }
       
    public void read(String namefile) throws FileNotFoundException {
        Scanner reader = new Scanner(new FileInputStream(namefile));
        String text = "";
        ArrayList<String> keys = new ArrayList<String>();
        ArrayList<String> values = new ArrayList<String>();
        boolean ok = true;
        String key, value;
        while(reader.hasNext()) {
            text += reader.nextLine();
        }
        StringTokenizer st = new StringTokenizer(text, ",");
        while(st.hasMoreTokens()) {
            String aux = st.nextToken();
            key = getKey(aux);
            value = getValue(aux);
            if(ok) {
                keys.add(key);
            }
            values.add(value);
            if(aux.contains("}")) {
                if(ok) {
                    dictionar.add(keys);
                }
                dictionar.add(values);
                values = new ArrayList<String>();
                ok = false;
            }
        }
        reader.close();
    }
       
    public String getKey(String s) {
        String key = "", aux = "";
        String pref = "";
        char c = '"';
        pref += c;
        String[] vect = s.split(pref);
        key = vect[1];
        return key;
    }
       
    public String getValue(String s) {
        String value = "", aux = "";
        String[] v = s.split(":");
        String pref = "";
        char c = '"';
        pref += c;
        value = v[1];
        if(value.contains(pref)) {
            v = value.split(pref);
            value = v[1];
        } else {
            Scanner in = new Scanner(value).useDelimiter("[^0-9]+");
            int integer = in.nextInt();
            value = "" + integer;
        }
        return value;
    }
       
    public void write(String namefile) throws FileNotFoundException {
        PrintWriter writer = new PrintWriter(namefile);
        int i = 0;
        int nr = dictionar.size();
        StringBuffer line;
        while(i < nr) {
            line = new StringBuffer();
            ArrayList<String> v = dictionar.get(0);
            for(String s : v) {
                s += ",";
                line.append(s);
            }
            line.append("\n");
            writer.write(line.toString());
            dictionar.remove(0);
            i++;
        }
        writer.close();
    }
}