NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Prepis z jedného súboru do druhého

V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Iva
Neregistrovaný
Avatar
Iva:2.1.2013 22:52

Ahojte, viem prepísať jeden súbor do druhého, ale neviem ako ho prepísať bez čísiel a uviesť počet zapisanych a vynechanych...

Obsah vstupného textového súboru vstup.txt prepíšte do výstupného textového súboru vystup.txt tak, že z pôvodného súboru vynecháte všetky číslice. Na záver na obrazovku vypíšte celkový počet zapísaných a vynechaných znakov.
vstup.txt: abc123DEF*! x007
vystup.txt: abcDEF*! x
zapisanych: 10
vynechanych: 6

 
Odpovědět
2.1.2013 22:52
Avatar
Kit
Tvůrce
Avatar
Odpovídá na
Kit:2.1.2013 22:54

Ukážeš nám, kolik jsi toho už udělala? Třeba ti pomůžeme.

Nahoru Odpovědět
2.1.2013 22:54
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Iva
Neregistrovaný
Avatar
Odpovídá na Kit
Iva:2.1.2013 23:01

Zatial mam iba to co som spominala....

public static void main(String[] args) {

try {

BufferedReader br = new BufferedReader(new FileReader("vstup­.txt"));

BufferedWriter bw = new BufferedWriter(new FileWriter("vys­tup.txt"));

String veta;

while ((veta = br.readLine()) != null) {
bw.write(veta);
bw.newLine();
}

br.close();
bw.close();
} catch (IOException ex) {
System.err.prin­tln(ex.getMes­sage());
} finally {
System.out.prin­tln("Súbor .....");
}
}
}

 
Nahoru Odpovědět
2.1.2013 23:01
Avatar
Kit
Tvůrce
Avatar
Odpovídá na
Kit:2.1.2013 23:35

Tak já už to mám odladěné, zkusím tě navést. Projdi si String veta cyklem od 0 do length(). Jednotlivý znak zjistíš metodou charAt(). Otestuješ ho, jestli je menší než '0' nebo větší než '9'. V případě splnění podmínky ho vypíšeš na výstup.

V tom cyklu samozřejmě inkrementuješ čítače výstupních znaků.

Editováno 2.1.2013 23:37
Nahoru Odpovědět
2.1.2013 23:35
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Fugiczek
Tvůrce
Avatar
Odpovídá na Kit
Fugiczek:3.1.2013 8:38

Nebylo by jednoduší a rychlejší použít statickou metodu ze třídy Character isDigit(char ch)?

 
Nahoru Odpovědět
3.1.2013 8:38
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Fugiczek
Kit:3.1.2013 8:46

Určitě bylo. S Javou teprve začínám a všechny metody ještě neznám.

Zkusil jsem a funguje to. Díky.

Nahoru Odpovědět
3.1.2013 8:46
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
matesax
Tvůrce
Avatar
matesax:3.1.2013 9:50

No a co Regex?

[0..9]

 
Nahoru Odpovědět
3.1.2013 9:50
Avatar
Kit
Tvůrce
Avatar
Odpovídá na matesax
Kit:3.1.2013 10:00

Obávám se, že Regex je v tomto případě kanón na vrabce. Ale zkusit to můžu. Spíš by se hodilo něco jako StrTr v PHP.

Nahoru Odpovědět
3.1.2013 10:00
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na matesax
Kit:3.1.2013 11:34

Regex mi vyšel 4× pomalejší než cyklus s metodou isDigit(), ukládání do StringBuffer a konverzí na String.

Nahoru Odpovědět
3.1.2013 11:34
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Iva
Neregistrovaný
Avatar
Iva:3.1.2013 14:33

Dakujem, nakoniec som to nejako urobila :D ...hlavna vec ze to splna co ma...

 
Nahoru Odpovědět
3.1.2013 14:33
Avatar
Kit
Tvůrce
Avatar
Odpovídá na
Kit:3.1.2013 14:49

Skvělé. Snad jsi využila něco z mých nápověd a snad ses přitom i něco naučila. Přijď zas, možná budu vstřícnější :)

Nahoru Odpovědět
3.1.2013 14:49
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Iva
Neregistrovaný
Avatar
Iva:4.1.2013 14:13

Este som chcela poradit s tymto:
potrebujem doladit, aby mi vypisalo ked je pocet kladnych aj zapornych rovnaky (tam mam nejaku chybu ) a tiez chcem, aby ma upozornilo pri zadavani, ze nula sa nemoze zadat, lebo musim zadavat iba nenulove cele cisla...

public static void main(String[] args) {
Scanner vstup = new Scanner(System.in);
System.out.print ("N: ");

int N;

do {
N = Integer.value­Of(JOptionPane­.showInputDia­log("Pocet prvkov musi byt kladny. N:"));

} while(N<=0);

int[] x = new int[N]; // vytvorime pole s N bunkami,
// to kde sa nachadza je ulozene v X

int cislo;
int plus = 0; //pocet kladnyhc
int minus = 0; // pocet zapornych

for (int i = 0; i < x.length; i++) { // pozor na rozsah pola ...
cislo = vstup.nextInt();
x[i] = cislo;
if (cislo > 0) plus++;
if (cislo < 0) minus++;

}

if (minus < plus) {
System.out.prin­tln("Viac +");
for (int i =0; i<x.length; i++) {
if (x[i] > 0) System.out.prin­t(x[i] + ", ");
}
if (minus > plus) {
System.out.prin­tln("Viac -");
for (int i =0; i<x.length; i++) {
if (x[i] < 0) System.out.prin­t(x[i] + ", ");
}
if (minus == plus) {
System.out.println ("ROVNAKO");
for (int i =0; i<x.length; i++) {
if ((x[i] < 0) &&(x[i] > 0 )) System.out.prin­t(x[i] + ", ");
}
}}
}}}

 
Nahoru Odpovědět
4.1.2013 14:13
Avatar
Kit
Tvůrce
Avatar
Odpovídá na
Kit:5.1.2013 13:18

Bylo by dobré, kdybys zdrojový kód vkládala jako zdrojový kód, aby se to dalo číst. Zbytečně to musím přetahovat do textového editoru. Navíc ti redakční systém mohl některé znaky spolknout.

Po přeformátování jsem celkem rychle zjistil, že máš chybně uzavřené podmíněné příkazy if (minus < plus) {... Stačí jen správně odsazovat, nejlépe automatizovaně.

if (minus < plus) {
    System.out.println("Viac +");
    for (int i = 0; i < x.length; i++) {
        if (x[i] > 0) System.out.print(x[i] + ", ");
    }
}
if (minus > plus) {
    System.out.println("Viac -");
    for (int i = 0; i < x.length; i++) {
        if (x[i] < 0) System.out.print(x[i] + ", ");
    }
}
if (minus == plus) {
    System.out.println("ROVNAKO");
    for (int i = 0; i < x.length; i++) {
        if ((x[i] < 0) && (x[i] > 0)) System.out.print(x[i] + ", ");
    }
}

Je jasné, že ten třetí seznam bude vždy prázdný, protože ta podmínka uvnitř cyklu je nesplnitelná.

Nahoru Odpovědět
5.1.2013 13:18
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na
Kit:5.1.2013 13:30

Ještě ten vstup:

while (plus + minus < x.length) { // pozor na rozsah pola ...
    cislo = vstup.nextInt();
    x[plus + minus] = cislo;
    if (cislo > 0) plus++;
    if (cislo < 0) minus++;
    if (cislo == 0) System.out.print("nula sa nemoze zadat ");
}
Nahoru Odpovědět
5.1.2013 13:30
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar

Neregistrovaný
Avatar
Odpovídá na Kit
:7.1.2013 14:50

Ďakujem...med­zičasom som prišla na to...použila som source/format, prešla som si to očami a šlo to ale aj tak ešte raz ĎAKUJEM...je super keď má kto poradit...pekny den

 
Nahoru Odpovědět
7.1.2013 14:50
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 15 zpráv z 15.