public class Info { private String navn; private String adresse; private String tlf; public Info(String navn, String adresse, String tlf) { this.navn = navn; this.adresse = adresse; this.tlf = tlf; } public String getNavn() { return navn; } public String getAdresse() { return adresse; } public String getTlf() { return tlf; } public String toString() { return navn + ", " + adresse + ", " + tlf; } }
InfoList.java:
package test;
import java.util.*;
public class InfoList extends ArrayList { public Info findNavn(String navn) { Info inf; for (int i = 0; i < size(); i++) { inf = (Info)get(i); if(inf.getNavn().equals(navn)) return inf; } return null; } public Info findAdresse(String adresse) { Info inf; for (int i = 0; i < size(); i++) { inf = (Info)get(i); if(inf.getAdresse().equals(adresse)) return inf; } return null; } public Info findTlf(String tlf) { Info inf; for (int i = 0; i < size(); i++) { inf = (Info)get(i); if(inf.getTlf().equals(tlf)) return inf; } return null; } }
TestInfo.java:
package test;
import java.util.*;
public class TestInfo {
public static void main(String[] args) { InfoList list = new InfoList(); list.add(new Info("Hansen", "Hvænget", "11111111")); list.add(new Info("Jensen", "Jgade", "22222222")); Info inf = list.findNavn("Jensen"); if(inf != null) { System.out.println(inf); } else { System.out.println("Jensen fidne ikke"); } } }
Bemærk at remove flytter elementerne d.v.s. at hvis du har elementer 0=Hansen, 1=Jensen, 2=Nielsen, 3=Olsen og kalder remove(2) så har du: 0=Hansen, 1=Jensen, 2=Olsen
Med hensyn til fornavn og efternavn, så kan jeg se 2 måder at gøre det på:
1) Rette alle klasserne til at have fornavn og efternavn i.s.f. bare navn.
2) Beholde klasserne som de er, gemme hele nvanet i navn og så teste på om det man søger efter er en del af navnet, således at "Jensen" matcher "Ole Jensen".
public Info findNavn(String navn) { Info inf; for (int i = 0; i < size(); i++) { inf = (Info)get(i); if(inf.getNavn().equals(navn)) return inf; } return null; }
med:
public Info findNavn(String navn) { Info inf; for (int i = 0; i < size(); i++) { inf = (Info)get(i); if(inf.getNavn().indexOf(navn) >= 0) return inf; } return null; }
Det virker super. Men jeg har lidt problemer med at få den til at søge efter flere med samme navn den skulle gerne skrive alle navnene ud, men den tager kun den første.
Hvis du skal have flere så skal du bruge noget i retning af:
public InfoList findNavn(String navn) { InfoList res = new InfoList(); Info inf; for (int i = 0; i < size(); i++) { inf = (Info)get(i); if(inf.getNavn().equals(navn)) res.add(inf); } return res; }
Jeg formoder vi snakker om at finde flere navne som indeholder en del-streng.
Prøv med:
public InfoList findNavn(String navn) { InfoList res = new InfoList(); Info inf; for (int i = 0; i < size(); i++) { inf = (Info)get(i); if(inf.getNavn().indexOf(navn) >= 0) res.add(inf); } return res; }
og:
Info[] allinf = list.findNavn("sen"); for(int i = 0; i < allinf.length; i++) { Ssystem.out.println(allinf[i]); }
Hej arne v Jeg har et stort problem jeg har lavet mit program og det virker som det skal i JBuilder men hvis jeg prøver at køre det i dos promten virker det ikke hvad kan det skyldes? Vil du eventuelt prøve at køre programmet så du kan se fejl meddelsen? Jeg kan sende programmet til dig.
Du kan da sagtens bruge package også med java kommandoen i DOS prompt !
Hvis du har en klasse MinKlasse i pakke minpakke, så skal MinKlasse.java og MinKlasse.class ligge i C:\projekt\minpakke og du skal bruge: javac -classpath C:\projekt ... java -classpath C:\projekt ... (ikke -classpath C:\projekt\minpakke)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.