To asi budete jeste chvilku. No bud pouzijete regularni vyrazy. Protoze sice nejsou efektivni (pro tuto ulohu), ale zase jsou dobre zdokumentovany.
A nebo proste nactete soubor do buffered readeru a nechate si vracet jednotlive radky mailu. (metoda readLine) a v nich pres indexOf budete hledat subject.
Stejne tak dokazete zjistit, ze je konec hlavicky a zacina vlastni email.
Je to na par radek.
metoda IndexOf http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html
a tady priklad cteni souboru pres readLine
http://www.cafeaulait.org/slides/sd2000west/javaio/54.html
Příspěvky odeslané z IP adresy 213.220.245.–
No asi problem bude zde
public Strom( int x, int y, int šířka, int výška )
{
new Elipsa ( x, y, šířka, 2*výška/3, Barva.ZELENA );
new Obdelnik( x+9*šířka/20, y+2*výška/3,
šířka/10, výška/3, Barva.CERVENA );
}
zkuste to upravit takto
public Strom( int x, int y, int šířka, int výška )
{
this.koruna = new Elipsa ( x, y, šířka, 2*výška/3, Barva.ZELENA );
this.strom = new Obdelnik( x+9*šířka/20, y+2*výška/3,
šířka/10, výška/3, Barva.CERVENA );
}
Takto incializujete objekty do promenych, ktere mate napsane v objektu strom. Predtim jste pouze tvoril objekty, ale neprirazoval jste je promenym. Java tedy zcela logicky vraci ze uvedene promene jsou null. Zkuste to,myslim ze by to melo fungovat.
Porovnani dvou stringu jinak nez equals fakt nejde. To == neporovnava stringy ale ukazatele na ne (String je objekt v Jave). Proto se to obcas chova divne. Tedy ono se to chova spravne, pouziti je spatne. Takze na stringy pouze equals, pripadne napsat vlastni metody, ktere je porovnaji.
Musel jsem se na to podivat, protoze si take vsechno nepamatuju. Ale predavani odkazem nejede proto, ze boolean je datove primitivum a nikoliv objekt a odkazem se predavaji pouze pole a objekty. Takze vytvorte z toho boolean hledani objekt a bude se predavat odkazem.
Fajn. Reseni je jednoduche. Ty vnitrni tridy se stanou obycejnymi java tridami. Pokud budou vsechny v jednom package, nevidim zadny problem.
package tree;
public class VytvorStrom {
private Strom strom;
/** Creates a new instance of VytvorStrom */
public VytvorStrom(String retez) {
setStrom(new Strom());
getStrom().setNaStrom(retez);
Uzel uz = new Uzel();
//Prvni uzel nema rodice, tak mu soupneme null objekt.
uz.setRodic(null);
getStrom().setKoren(uz);
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
VytvorStrom vs = new VytvorStrom("strom");
System.out.println(vs.getStrom().getKoren().getRodic());
}
public Strom getStrom() {
return strom;
}
public void setStrom(Strom strom) {
this.strom = strom;
}
}
Zbyle tridy jsem pripojil jako prilohu. Staci je nakopirovat do netbeans.
Co se tyce uzivani private a public, tak vcelku zalezi jen na vas. Tam kam jsem soupnul private muzete dat public. Nic se nestane.
Java myslim predava odkazem rovnou.
A k vasi prvni otazce.
Proc pouzivate inner classes ? Je to nutne? Netbeans rvou zcela po pravu, ty inner classes nejsou staticke. Jedna z moznosti jak to udelat je ze
public class abc{
bbb prmn;
public void abc(){
aaa prom = new aaa();
prmn = new bbb();
}
class aaa{}
class bbb{}
public static void main(){
abc promenna = new abc();
}
}
Proste volani tech inner classes zabalite do hlavni tridy. Ale i tak mi neni zcela jasne k cemu je potrebujete. Lepe by bylo kdybyste je delal jako normalni tridy. Budete tak mit i prehlednejsi kod.
Jakej system? Linux ci Windows?
Linux
export TOMCAT_HOME=/kde/pak/mam/tomcat/
u windows nevim. Ale zkus se poptat strycka googla.
Idealne pokud pouzivas linux, tak nainstalovat tomcat pres apt_get (ubuntu,debian apod) ci pres yum (fedora)
Pak ti tyhle problemy odpadnou.