Cod sursa(job #1347897)

Utilizator AndlolAndrei Apostoiu Andlol Data 19 februarie 2015 12:41:47
Problema Convertor Scor 0
Compilator java Status done
Runda rosedu_cdl_2015 Marime 2.32 kb
//package javaapplication9;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) throws IOException {
        
        Scanner scanner;
        PrintWriter out;
        Scanner valueScanner;
        String value;
        String container;
        Scanner keyScanner;
        String test1,test2,key;
        int position1,position2,rightCurly;

        scanner = new Scanner(new FileInputStream("convertor.in"));
        scanner.useDelimiter("}|]");

        out = new PrintWriter("convertor.out");
        
        //aflare chei
        container = scanner.next().trim();
        keyScanner = new Scanner(container);
        keyScanner.useDelimiter(",");
        while(keyScanner.hasNext()) {
            key = keyScanner.next().trim();
            
            position1=key.indexOf('"');
            position2=key.indexOf('"', position1+1);
            
            out.write(key.substring(position1+1,position2)+",");
        }
        out.println();
        keyScanner.close();
        
        // aflare valori
        scanner = new Scanner(new FileInputStream("convertor.in"));
        while (scanner.hasNext()) {
            container = scanner.next().trim();
            valueScanner = new Scanner(container);
            valueScanner.useDelimiter(",");
            
            while(valueScanner.hasNext()) {
                value = valueScanner.next().trim(); // value arata asa: "name": "Ruby on Rails"  sau "commits": 49507

                position1=value.indexOf(':'); 
                position2=value.length();
                 
                 //test2 e de forma : "Ruby on Rails" sau 49507
                test2=value.substring(position1+1,position2).trim();
                if(test2.indexOf('"')== -1) { // valoarea e numar deci nu trebuie sa elimin ghilimelele
                    out.write(value.substring(position1+1,position2).trim()+",");
                }
                else{// elimin ghilimelele
                    out.write(test2.substring(1,test2.length()-1).trim()+",");
                }
                
            }
            out.println();
        }
        
        //valueScanner.close();
        scanner.close();
        out.close();
    }
}