[ bantes9 @ 05.02.2012. 22:11 ] @
Potrebna mi je mala pomoc oko jednog ispitnog zadatka.

Zadatak je napisati Java program koji cita jednu rec sa ulaza a zatim u tekstualnom fajlu (rec "pivo" a fajl vesti.txt u prilogu) broji koliko puta se ta rec pojavaljuje (pretraga case-insensitive) i taj broj se stampa na standardnom izlazu.

Pocetnik sam i za sada sam uspeo da napisem sledeci deo koda:

Code:

package citanje.tekstualnog.fajla;

import java.io.*;
import java.util.*;
import java.util.Scanner;


public class CitanjeTekstualnogFajla {

    public static void main(String[] args) throws Exception{
 {
        Scanner input=new Scanner(new File("vesti.txt"));
        String st=input.nextLine();
        int count=0;
        StringTokenizer stk=new StringTokenizer(st," ");
        while(stk.hasMoreTokens()){
             String token=stk.nextToken();
            if (token.equals("pivo")){
            count++;}
        }
        System.out.println("Broj pojavljivanja reci je: "+ count);
    }
}
}


Problem je, sto sam ja ovde predvideo da se pretrazuje rec "pivo", nisam procitao tu rec. Druga stvar je sto pretraga nije case-insensitive (dobio sam rezultat od 2 prikaza umesto 4).

Koristim NetBeans za ovu pricu (ovaj alat me ceka na ispitu) i ponekad mi nije jasan deo kada treba da uzmem neku vrednost sa ulaza. Napr. kod javascript-a sam uzimao vrednost iz text polja dok ovde pri pokretanju programa nemam mogucnost unosa vrednosti (recimo da sam hteo da napravim program za sabiranje dva broja, kako bih testirao unosom vrenosti?).

Neka pitanja su mozda banalna ali pocinjem tek sa uhodavanjem u Javi. Hvala na svakoj vrsti pomoci.
[ Texas Instruments @ 05.02.2012. 22:23 ] @
Za čitanje te reči ti treba ovakva "kobasica", od System.in ulaznog stream-a praviš InputStreamReader, a od njega BufferedReader da bi mogao da čitaš stringove.
Code:

String word = null;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
word = br.readLine();

Time rešavaš taj problem oko unosa te reči koju želiš da tražiš.
Druga stvar sa ovim poređenjem, osim equals, imaš metodu equalsIgnoreCase koja ignoriše mala i velika slova, a to je ono što tebi treba.
[ bantes9 @ 05.02.2012. 23:08 ] @
Hvala na ovako brzom odgovori i objasnjenju.

Gledao sam razne primere na osnovu kojih sam System.in vezao za ulazni fajl ali ne i za ulazni parametar i sada kada sam ispravio kod, dobio sam i mogucnost unosa reci za pretragu nakon pokretanja programa (odgovor na poslednje pitanje).

Ukoliko nekom zatreba, kompletan kod izgleda ovako:

Code:

package citanje.tekstualnog.fajla;

import java.io.*;
import java.util.*;
import java.util.Scanner;


public class CitanjeTekstualnogFajla {
    public static void main(String[] args) throws Exception{
 {String word = null;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
word = br.readLine();
        Scanner input=new Scanner(new File("vesti.txt"));
        String st=input.nextLine();
        int count=0;
        StringTokenizer stk=new StringTokenizer(st," ");
        while(stk.hasMoreTokens()){
             String token=stk.nextToken();
            if (token.equalsIgnoreCase("pivo")){
            count++;}
        }
        System.out.println("Broj pojavljivanja reci je: "+ count);
    }
}
}


Definitivno je zanimljiva i opcija equalsIgnoreCase jer sam pretragom mahom nailazio na regular expression primere i vec sam poceo da komplikujem sebi zivot, razmisljajuci kako da pretragu resim na taj nacin.

Hvala puno jos jednom na pomoci.