Hallo Zusammen
Ich habe hier ein Problem mit der Methode suchen().
Und zwar sollte sie so funktionieren, dass der Name eingegeben wird und die dazugehörige Telefonnummer ausgegeben wird. Das funktioniert aber nicht.
Könnt Ihr mir sagen woran das liegt?
Diese Methode
Danke Sophie
Ich habe hier ein Problem mit der Methode suchen().
Und zwar sollte sie so funktionieren, dass der Name eingegeben wird und die dazugehörige Telefonnummer ausgegeben wird. Das funktioniert aber nicht.
Könnt Ihr mir sagen woran das liegt?
Diese Methode
Danke Sophie
Java:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class Telefonliste {
//Erstellt eine Liste und speichert Objekte von TelefonEintrag
private static ArrayList<TelefonEintrag> liste1 = new ArrayList<TelefonEintrag>();
private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
/**
* getInputString()
* Die Methode liest eine Benutzereingabe von der Eingabeaufforderung und gibt diese
* als String zurück.
*
* @ param text Text, der als Eingabeaufforderung fuer den Benutzer ausgegeben wird
* @ return Einen Wert vom Typ String der die Benutzereingabe enthaelt
*/
public static String getInputString(String text){
while (true){
System.out.print(text);
try{
return br.readLine();
}catch (Exception e){
System.err.println("Fehler bei der Verarbeitung: " + e.getLocalizedMessage());
}
}
}
/**
* getInputString()
* Die Methode liest eine Benutzereingabe von der Eingabeaufforderung und gibt deise als
* String zurueck
*
* @return Einen Wert vom Typ String der die Benutzereingabe enthält
*/
public static String getInputString(){
while (true){
try{
return br.readLine();
}catch (Exception e){
System.err.println("Fehler bei der Verarbeitung: " + e.getLocalizedMessage());
}
}
}
/**
* getInputInt()
* Die Methode liest eine Benutzereingabe von der Eingabeaufforderung und gibt diese als
* Integer zurueck.
*
* @param text Enthaelt die Eingabeaufforderung fuer den Benutzer
* @return Einen Wert vom Typ int der die Benutzereingabe enthaelt
*/
public static int getInputInt (String text){
while (true){
System.out.print(text);
try{
return Integer.parseInt(br.readLine());
}catch (Exception e){
System.err.println("Fehler bei der Verarbeitung: " + e.getLocalizedMessage());
}
}
}
/**
* getInputStringList()
* Die Methode liest die Benutzereingabe mehrerer Zeilen von der Eingabeaufforderung ein
* und speichert sie in einem ArrayList "Alle Zeilen" und gibt diese ArrayList zurueck.
*
* @param text Enthaelt die Eingabeaufforderung fuer den Benutzer
* @return ArrayList die die Benutzereingabe enthaelt.
*/
public static ArrayList<String> getInputStringList (String text){
System.out.print(text);
String zeile;
//ArrayListObjekt erzeugen
ArrayList<String> alleZeilen = new ArrayList<String>();
//Eine Zeichenkette wird in einer while-Schleife eingelesen, solange bis der Anwender
//die Zeichenkette *** eingibt
zeile = getInputString();
while (!zeile.equals("***")){
//eingelesene Zeile wird ueber die Methode add() in die ArrayList eingefuegt
alleZeilen.add(zeile);
//Zeile als String eingelesen
zeile = getInputString();
}
return alleZeilen;
}
static String name;
private static String nummer;
//private static List<TelefonEintrag> liste;
/**
* menue() wird vom Konstruktor aufgerufen und stellt die Menueauswahl von 5 Punkten:
* 1. Eintrag anlegen
* 2. Eintrag löschen
* 3. Eintrag ändern
* 4. Nach einer Person suchen
* 5. Eine Telefonnummer identifizieren
* Nach Auswahl des Menuepunktes wird in einer switch-case Anweisung die naechste Methode
* aufgerufen
* @throws IOException
*/
public static void menue() throws IOException{
int auswahlInt;
do{
menueText();
auswahlInt = getInputInt ("\n Bitte geben Sie eine Nummer ein: ");
switch (auswahlInt){
case 1:
anlegen();
break;
case 2:
loeschen();
break;
case 3:
aendern();
break;
case 4:
suchen();
System.out.println("Nummer: " + name);
break;
case 5:
numIdent();
break;
default:
System.out.println("\n Eingabefehler!");
break;
}
}while (auswahlInt != 4 && auswahlInt !=0);
}
/**
* Gibt das Hauptmenue aus.
*/
private static void menueText(){
System.out.println("Bitte waehlen Sie eine Funktion: ");
System.out.println("1. Eintrag anlegen: ");
System.out.println("2. Eintrag löschen: ");
System.out.println("3. Eintrag ändern: ");
System.out.println("4. Nach einer Person suchen: ");
System.out.println("5. Eine Telefonnummer identifizieren: ");
System.out.println("6. Ohne Speichern Beenden");
}
/**
* anlegen()
* Die Methode dient zum Einlesen des Namens und der Telefonnummer der Person
* Alle Angaben werden in die Liste TelefonEintrag gespeichert
* Diese Methode wird vom Konstruktor aufgerufen
* @throws IOException
*/
public static void anlegen() throws IOException{
String jn;
//Name und Telefonnummer einlesen
String name = getInputString("Bitte Name eingeben: ");
String nummer = getInputString("Bitte Telefonnummer eingeben: ");
//Speichern des TelefonEintrag-Objekts, damit spaeter abrufbar
liste1.add(new TelefonEintrag (name, nummer));
System.out.println("Ihr Eintrag wurde gespeichert.");
jn = getInputString("Möchten Sie einen weiteren Eintrag anlegen? (j)a, (n)ein");
if (jn.equalsIgnoreCase("j")){
anlegen();
}else{
System.out.println("Möchten Sie das Telefonbuch weiterhin benuzten?");
System.out.println("(j)a, (n)ein");
String antwort = br.readLine();
if (antwort.equalsIgnoreCase("j")){
menue();
} else {
System.out.println("Auf Wiedersehen");
}}
}
/**
* suchen()
*
* @param name
* @return suchen der gesuchte TelefonEintrag wird in der Variablen suche gespeichert
*/
public static TelefonEintrag suchen(){
String name = getInputString("Nach wen möchten Sie suchen? ");
TelefonEintrag suche = null;
for(int i = 0; i < liste1.size(); i++){
//durchlauf nimmt nach jedem Durchlauf der for Schleife den Namen auf und
//vergleicht ihn mit dem gesuchten Namen
TelefonEintrag durchlauf = liste1.get(i);
//vergleicht den eingegeben Namen mit dem Namen aus dem TelefonEintrag
if(name.equals(durchlauf.getNummer()))
//gefundene Nummer wird an suche übergeben
suche = durchlauf;
else{
System.out.println("Der Eintrag konnte nicht gefunden werden.");
}
}
return suche;}
/**
* numIdent()
* Bei Eingabe einer Telefonnummer wird der Name der Person ausgegeben
* @throws IOException
*/
public static String numIdent () throws IOException{
String suche = null;
System.out.println("Bitte geben Sie eine Telefonnummer ein: ");
nummer = br.readLine();
for(int i = 0; i < liste1.size(); i++){
TelefonEintrag durchlauf = liste1.get(i);
//Nummern werden verglichen
if(nummer.equals(durchlauf.getNummer()))
//der Name zu der gefundenen Nummer wird in such gespeichert
suche = durchlauf.getName();
}
return suche;
}
/**
* loeschen()
* Mit dieser Methode kann ein ausgewählter Eintrag gelöscht werden
* @throws IOException
*/
public static void loeschen() throws IOException{
//Benutzereingabe des zu löschenden Eintrags
System.out.println("Welcher Name/Eintrag soll gelöscht werden?");
name = br.readLine();
//sucht den Namen mit der Methode suchen() und speichert diesen in a
TelefonEintrag a = suchen();
//löscht den TelefonEintrag a
liste1.remove(a);//löscht den TelefonEintrag a
}
/**
* aendern()
* Mit dieser Methode kann ein ausgewählter Eintrag geändert werden
* @throws IOException
*/
public static void aendern() throws IOException{
System.out.println("Welcher Eintrag/Name soll ausgetauscht werden?: ");
name = br.readLine();
System.out.println("Welcher Name soll alternativ eingefuegt werden?: ");
String name_neu = br.readLine();
System.out.println("Wie lautet die alte Telefonnummer: ");
nummer = br.readLine();
System.out.println("Wie lautet die aktuelle Nummer?: ");
String nummer_neu = br.readLine();
nummer = br.readLine();
int index = 0;
TelefonEintrag t_new = new TelefonEintrag(nummer_neu, name_neu);
TelefonEintrag te = null;
for (TelefonEintrag t : liste1) {
if (t.getName().equals(name) || t.getNummer().equals(nummer)) {
te = t;
break;
}
}
if (te != null)
liste1.get(index);
liste1.set(index, t_new);
}
public static void main(String[] args) throws IOException {
menue();}
}
Java:
public class TelefonEintrag {
private String name;
private String nummer;
/**
* Konstruktor, erstellt ein leeres TelefonEintrag Objekt
*/
public TelefonEintrag(){
}
/**
* Konstruktor erstellt ein Objekt mit Name und Numme
* @param name
* @param nummer
*/
public TelefonEintrag(String name, String nummer){
this.name = name;
this.nummer = nummer;
}
/**
* Methode überschreibt die gleichnamige Methode in der Oberklasse Object
* wird benötigt, um Objekte als String auszugeben, sonst würde nur die Referenz auf das Objekt angezeigt
*/
public String toString(){
return name + " , " + nummer + "\n";
}
/**
* Methode zur Eingabe des Namens
* @return name
*/
public String getName(){
return name;
}
/**
* Methode zum Ändern des Namens, übergibt den neuen Namen an die Klassenvariablen
* @param name
*/
public void aendernName(String name){
this.name = name;
}
/**
* Methode zum Eingeben der Telefonnummer
* @return nummer
*/
public String getNummer(){
return nummer;
}
/**
* Methode zum Ändern der Telefonnummer, übergibt die neue Nummer an die Klassenvariable
* @param nummer
*/
public void aendernNummer(String nummer){
this.nummer = nummer;
}
}//Ende KLasse