[ nigth rider @ 04.12.2011. 23:55 ] @
Potrebna mi je pomoc pri resavanju zadatka, prvo cu staviti zadatak pa objasniti gde je problem.


ZADATAK:

Napisati program koji u fajlu tekst.txt pronalazi sve reči pisane početnim velikim slovom i upisuje ih u novi fajl (caps.txt) zajedno sa brojem linije u kojoj se pojavljuju. Redovi u fajlu caps.txt treba da budu u obliku <rec><tab><brojLinije>, npr:
Milos 1
Obilic 1
Beogradu 3

Evo deo mog koda.

Code:

import java.io.*;
import java.util.*;
import java.util.ArrayList;


public class StartsaVelikoSlovo {
    
    public static ArrayList<String> reci (String linija) 
    {
        ArrayList<String>lista = new ArrayList<String>();
        
        String[] s;
        s=linija.split(" ");
        
        for(int i=0;i<s.length;i++)
        {
            
            lista.add(s[i]);
        }
        return lista;
        
    }
    
}


Evo i izvrsnog dela.


Code:

import java.io.*;
import java.util.*;
import java.util.ArrayList;


public class StartVelikoTest {
    public static void main(String[] args) throws FileNotFoundException, IOException {
        
        ArrayList<String>lista = new ArrayList<String>();
        ArrayList<String>veliki = new ArrayList<String>();
        String tekst=" ";
        
        BufferedReader fajl = new BufferedReader(new FileReader("tekst.txt"));
        
        while(true)
        {
            
            tekst+=fajl.readLine()+" ";
            if(fajl.readLine()==null) break;
        }
       
        lista = StartsaVelikoSlovo.reci(tekst);
        
        for(String s : lista)
        {
           char c = s.charAt(0);                       // ovde nastaje problem
           if(Character.isUpperCase(c))
                veliki.add(s);
           
        }
        
        for(String s : veliki)
            System.out.println(s);
        
      
    }   
    
}
s

Molio bih za p pomoc u delu kada iz liste ucitavam pojedinacne stringove/reci da mi neko kaze kako da proverim da li je prvo slov veliko ja sam pokusao na gore navedeni nacin ali nece .

Drugi deo zadatka da upisem u fajl mi nije problem samo ovaj.
Hvala.
[ Texas Instruments @ 05.12.2011. 00:23 ] @
Dešava se da imaš prazan string, "" za koji se poziva metoda charAt.
Code:

    public char charAt(int index) {
        if ((index < 0) || (index >= count)) {
            throw new StringIndexOutOfBoundsException(index);
        }
        return value[index + offset];
    }

Dakle baca exception StringIndexOutOfBoundsException. Ubaci proveru da li je taj string s prazan string da zaobiđeš tu situaciju.
[ biske86 @ 05.12.2011. 00:57 ] @
Ja sam upravo debagovao tvoj program sa nekim tekstom koji sam ubacio i kada se desi prekid ArrayList pod nazivom lista ima prvi element koji je prazan i kad pozoves getCharAt(0) onda se ispaljuje izuzetak. To piše u dokumentaciji:
Citat:
public class StringIndexOutOfBoundsException
extends IndexOutOfBoundsException
Thrown by String methods to indicate that an index is either negative or greater than the size of the string. For some methods such as the charAt method, this exception also is thrown when the index is equal to the size of the string.