Cod sursa(job #1348084)

Utilizator AndlolAndrei Apostoiu Andlol Data 19 februarie 2015 15:07:11
Problema Convertor Scor 0
Compilator java Status done
Runda rosedu_cdl_2015 Marime 2.38 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 = new Scanner(new FileInputStream("in.txt"));
    PrintWriter out = new PrintWriter("convertor.out");
    
    Scanner valueScanner;
    String value;
    // delimitez fisierul in obiecte de tip { ......} 
    scanner.useDelimiter("}");
    String container="";
    String test1,test2,key="";
    int position1,position2,rightCurly;
    
    container=scanner.next().trim();
     // impart obiectele dintre {...} dupa virgula  
    Scanner keyScanner=new Scanner(container);
    keyScanner.useDelimiter(",");
    //aflare chei
    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
    while (true){
            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();
            if(scanner.hasNext()){
                container=scanner.next().trim();
                if(container.equals("]")) break;
            }
            //else {
              //  valueScanner.close();
                //break;
            //}
    }
    
     scanner.close();
     out.close();
}
}