Výsledky 1 až 2 z 2

Téma: [Java]pomoc s programem

  1. #1

    Standardní [Java]pomoc s programem

    Prosím vás, potřebovala bych pomoc s programem, respektivě doplnit ho,byl by někdo ochotný? Nejsem programátor, potřebuji to v rámci předmětu. Děkuji
    Příklad:
    Napište třídu SortCSV s metodou main, která ze std. vstupu nebo vstupního souboru přečte soubor ve formátu CSV (Excel, OpenOffice...), setřídí jeho řádky podle zadaného sloupce a vypíše na standardní výstup nebo do výstupního souboru.

    Program bude ovládán následujícímí parametry příkazového řádku:

    -f=jmenoVstupnihoSouboru - pokud bude zadán, bude jako vstup brát obsah souboru se jménem "jmenoVstupnihoSouboru". Pokud nebude zadán, bere std. vstup.
    -o=jmenoVystupnihoSouboru - pokud bude zadán, bude jako výstup brát obsah souboru se jménem "jmenoVystupnihoSouboru". Pokud nebude zadán, vytiskne výsledek na std. výstup.
    -c=cisloSloupce - pokud bude zadán, setřídí soubor podle zadaného sloupce. Pokud nebude zadán, setřídí jej podle 1. sloupce.
    -t=[text|number] - typ řazení (textový nebo číselný). Pokud nebude zadán, řadíme textově.
    Nápověda:

    vytvořte si třídu CSV, která bude reprezentovat CSV soubor s vlastnostmi "číslo sloupce, podle kterého se má třídit" a "typ sloupce (číslo, text)".
    Uvnitř CSV třídy vytvořte třídu CSVRow, která bude reprezentovat 1 řádek CSV souboru. Datová část CSVRow bude obyčejné pole String-ů
    Aby bylo možné řádky navzájem porovnávat, musí CSVRow implementovat interface Comparable a jeho metodu compareTo(...). Tuto vlastnost jistě oceníte při volání metody Arrays.sort(...), která pro potomky Comparable nevyžaduje implementovat zvláštní Comparator.
    Datová část třídy CSV bude pole řádků CSV souboru = pole objektů CSVRow. Můžete jej implementovat jako statické pole, ale určitě vám nebude dělat problém zajistit jeho dynamický růst (=realokaci + kopii) v případě, že při ukládání řádků dojde k vyčerpání volného prostoru v poli. Popřípadě - pokud už umíte používat Collections, využijte některou ze tříd Array* (např. ArrayList), která dynamickou realokaci již má implementovanou.
    V main-u můžete číst vstupní soubor po celých řádcích. Při ukládání do objektu CSV pak textové řádky můžete na jednotlivé políčka rozdělit metodou String.split(...). Popř. můžete využít java.util.Scanner
    Pro méně zdatné uvádím kostru programu, který už je kompletně funkční, stačí jen doplnit kód pro zpracování argumentů příkazové řádky -c, -t, -o (po vložení do Eclipse udělejte Source->Format neboli CTRL+SHIFT+F:
    package vyuka;

    import java.io.*;

    class CSV {

    /**

    *

    * jmeno

    */

    enum TypRazeni {TEXTOVE, CISELNE};

    int cisloSloupce=0;

    TypRazeni typRazeni=TypRazeni.TEXTOVE;

    class RadekCSV implements Comparable {

    String policka[];

    public int compareTo(Object arg0) {

    if (typRazeni==TypRazeni.TEXTOVE) {

    return policka[cisloSloupce].compareTo(((RadekCSV)arg0).policka[cisloSloupce]);

    } else if (typRazeni==TypRazeni.CISELNE) {

    return Integer.decode(policka[cisloSloupce])-Integer.decode(((RadekCSV)arg0).policka[cisloSloupce]);

    }

    return 0;

    }

    public void print(PrintStream ps) {

    for (String solicka) ps.print(s+" ");

    }

    }

    static final int VELIKOST=1024;

    RadekCSV radky[]=new RadekCSV[VELIKOST];

    int indexRadku=0;

    public void pridejRadek(String radek) {

    radky[indexRadku]=new RadekCSV();

    radky[indexRadku++].policka=radek.split("[;|,]");

    if (indexRadku>=radky.length) {

    RadekCSV pomPole[]=new RadekCSV[2*radky.length];

    System.arraycopy(radky, 0, pomPole, 0, radky.length);

    radky=pomPole;

    }

    }

    public void sort() {

    java.util.Arrays.sort(radky, 0, indexRadku);

    }

    public void print(PrintStream ps) {

    for (int i=0; i<indexRadku; i++) {

    radky[i].print(ps);

    ps.println();

    }

    }

    }

    public class SortCSV {

    public static void main(String[] args) {

    InputStream inp=System.in;

    PrintStream outp=System.out;

    CSV csv=new CSV();

    for (String s:args) {

    String option=s.substring(0,2);

    String value=s.substring(3);

    /** TODO V této smyčce procházíme seznam argumentů příkazového řádku

    * Dle příkladu pro -f=jmenoVstupnihoSouboru zde doplňtě svůj kód pro zpracování argumentů -o, -t, -c

    * /

    if (option.equals("-f")) { /* Příklad - zpracování -f= */

    try {

    inp=new java.io.FileInputStream(value);

    } catch (FileNotFoundException e) {

    e.printStackTrace();

    }

    } else if (option.equals("-o")) {
    /** TODO zde doplňte svůj kód */

    } else if (option.equals("-c")) {
    /** TODO zde doplňte svůj kód */

    } else if (option.equals("-t")) {
    /** TODO zde doplňte svůj kód */

    }

    }

    BufferedReader inb=new BufferedReader(new InputStreamReader(inp));

    String str;

    try {

    while ((str=inb.readLine())!=null) {

    csv.pridejRadek(str);

    }

    } catch (IOException e) {

    e.printStackTrace();

    }

    csv.sort();

    csv.print(outp);

    }

    }

  2. #2

    Standardní Re: [Java]pomoc s programem

    Pokud máš nějaký konkrétní problém piš....ale celý úkol Ti tady pravděpodobně nikdo dělat nebude. Jestli můžu radit - zkus si na to sednout a psát..a pak Ti rádi pomůžeme s případnými chybkami a problémy.
    Dell XPS 1210,Sams 275t,Microsoft XBOX360,Natural Mouse 6000 + Keyboard 4000,Windows 7 Professional
    Blondie : You see in this world there's two kinds of people, my friend. Those with loaded guns, and those who dig. You dig.

Informace o tématu

Users Browsing this Thread

Toto téma si právě prohlíží 1 uživatelů. (0 registrovaných a 1 anonymních)

Podobná témata

  1. Pomoc s programem do Pascalu
    Založil Bari v sekci fóra Programování
    Odpovědí: 7
    Poslední příspěvek: 05.03.2008, 16:23
  2. Jakým programem mam taktovat ASUS EAX1950Pro?
    Založil malond v sekci fóra ATI grafické karty
    Odpovědí: 16
    Poslední příspěvek: 04.07.2007, 23:44
  3. Nedokončená defragmentace s programem O&O Defrag
    Založil Tom.CZ.73 v sekci fóra Pevné disky a řadiče
    Odpovědí: 5
    Poslední příspěvek: 31.10.2006, 10:03
  4. Alias rozhrani s programem "ip"
    Založil CompCrasher v sekci fóra Sítě
    Odpovědí: 1
    Poslední příspěvek: 21.01.2005, 15:58

Pravidla přispívání

  • Nemůžete zakládat nová témata
  • Nemůžete zasílat odpovědi
  • Nemůžete přikládat přílohy
  • Nemůžete upravovat své příspěvky
  •