Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hi kann mir irgendjemand sagen warum das nicht funktioniert ?
Main:
Java:
case "L":{
String nn;
Scanner NN = new Scanner( System.in );
System.out.print( "Geben Sie den zu loeschenden Nachname ein: " );
nn = NN.nextLine();
Kartei tmp = new Kartei();
tmp.loeschen(nn);
break;
}
Kartei:
Java:
public void loeschen(String nn)
{
for (int i =0; i<alle.size();i++) {
if (alle.get(i).getNachname().equals(nn)) {
System.out.println("Loeschen erfolgreich");
alle.remove(i);
}
else {
System.out.println("Loeschen fehlgeschlagen");
}
}
}
import java.util.Vector;
import java.util.Scanner;
public class Kartei {
Vector<Freunde> alle = new Vector<Freunde> (1000);
static int schluessel = 0;
private static final int test = -1;
public void anlegen() {
Freunde a = null;
String vn, nn;
++schluessel;
Scanner str = new Scanner( System.in );
System.out.println("Geben Sie einen Vornamen ein: ");
vn = str.nextLine();
if(!isAlpha(vn) || vn.length()<3) {
System.err.println("Es dürfen nur Buchstaben verwendet werden und der Vorname "
+ "muss mindestens 3 zeichen besitzen");
anlegen();
}
System.out.print( "Geben Sie einen Nachname eingeben: " );
nn = str.nextLine();
if(!isAlpha(nn) || vn.length()<3) {
System.err.println("Es dürfen nur Buchstaben verwendet werden und der Nachname "
+ "muss mindestens 3 zeichen besitzen");
anlegen();
}
a = new Freunde(vn, nn);
alle.add(a);
}
public int suchen(String key)
{
for(int i =0; i<alle.size(); i++)
{
if(alle.get(i).getNachname().equals(key))
{
return i;
}
else
{
System.out.println("Kontakt nicht gefunden");
return test;
}
}
return 0;
}
public void loeschen(String nn)
{
for (int i =0; i<alle.size();i++) {
if (alle.get(i).getNachname().equals(nn)) {
System.out.println("Loeschen erfolgreich");
alle.remove(i);
public boolean isAlpha(String text) {
for (char c : text.toCharArray()) {
// a - z
if (c >= 'a' && c <= 'z')
continue;
// A - Z
if (c >= 'A' && c <= 'Z')
continue;
// ö, ü, ä, ß
if (c == 'ö' || c == 'ß' || c == 'ä' || c == 'ü')
continue;
return false;
}
return true;
}
}
Main:
import java.util.*;
import javax.xml.bind.helpers.AbstractMarshallerImpl;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
boolean b = true;
do
{
System.out.println("A = Freundesliste anzeigen");
System.out.println("H = Eintrag hinzufuegen");
System.out.println("L = Eintrag loeschen");
System.out.println("F = Eintrag finden");
System.out.println("W = Eintrag aendern");
System.out.println("B = Programm beenden");
System.out.println("Bitte waehlen: ");
String eingabe = sc.next();
switch (eingabe)
{
case "A":{
break;
}
case "H":{
Kartei tmp = new Kartei();
tmp.anlegen();
break;
}
case "L":{
String nn;
Scanner NN = new Scanner( System.in );
System.out.print( "Geben Sie den zu loeschenden Nachname ein: " );
nn = NN.nextLine();
Kartei tmp = new Kartei();
tmp.loeschen(nn);
break;
}
case "B":{
b = false;
break;
}
case "F":{
break;
}
default :
}
}while (b == true);
}
}
so sieht es ganz aus ich komm halt aus c++ und versuch mich erst hieran
ja das dacht ich mir aber wie kann ich auf die methode der Kartei zugreifen ?? oder gibbts die möglichkeit eine methode in der Freunde zu erstellen die dann auf kartei verweist ??
Leg doch die Kartei einfach außerhalb des Switches an. Nachtrag: dank der Code-Formatierung habe ich die Schleife übersehen... Also: Leg die Kartei außerhalb der Schleife an.
Wenn Du künftig Code postest, dann bitte so: [code=Java]Dein Code[/code]
Bitte komplettes SSC(C)E posten und zwar leserlich und innerhalb Java Tag s!
Ein objekt wird "gelöscht" indem es nicht mehr referenziert wird und daher rufst Du remove() auf....
aber Du musst remove() auch aufrufen.
public class Freunde {
private String vorname;
private String nachname;
public Freunde(String vorname, String nachname)
{
this.vorname=vorname;
this.nachname=nachname;
}
public Freunde() {
// TODO Auto-generated constructor stub
}
public String getVorname() {return vorname;}
public String getNachname() {return nachname;}
public void setVorname(String vorname) {this.vorname = vorname;}
public void setNachname(String nachname) {this.nachname=nachname;}
}
Java:
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
boolean b = true;
do
{
System.out.println("A = Freundesliste anzeigen");
System.out.println("H = Eintrag hinzufuegen");
System.out.println("L = Eintrag loeschen");
System.out.println("F = Eintrag finden");
System.out.println("W = Eintrag aendern");
System.out.println("B = Programm beenden");
System.out.println("Bitte waehlen: ");
String eingabe = sc.next();
switch (eingabe)
{
case "A":{
break;
}
case "H":{
break;
}
case "L":{
String nn;
Scanner NN = new Scanner( System.in );
System.out.print( "Geben Sie den zu loeschenden Nachname ein: " );
nn = NN.nextLine();
break;
}
case "B":{
b = false;
break;
}
case "F":{
break;
}
default :
}
}while (b == true);
}
}
Java:
import java.util.Vector;
import java.util.Scanner;
public class Kartei {
Vector<Freunde> alle = new Vector<Freunde> (1000);
Freunde tmp = new Freunde();
static int schluessel = 0;
private static final int test = -1;
public void anlegen() {
String vn, nn;
++schluessel;
Scanner str = new Scanner( System.in );
System.out.println("Geben Sie einen Vornamen ein: ");
vn = str.nextLine();
if(!isAlpha(vn) || vn.length()<3) {
System.err.println("Es dürfen nur Buchstaben verwendet werden und der Vorname "
+ "muss mindestens 3 zeichen besitzen");
anlegen();
}
System.out.print( "Geben Sie einen Nachname eingeben: " );
nn = str.nextLine();
if(!isAlpha(nn) || vn.length()<3) {
System.err.println("Es dürfen nur Buchstaben verwendet werden und der Nachname "
+ "muss mindestens 3 zeichen besitzen");
anlegen();
}
tmp = new Freunde(vn, nn);
alle.add(tmp);
}
public int suchen(String key)
{
for(int i =0; i<alle.size(); i++)
{
if(alle.get(i).getNachname().equals(key))
{
return i;
}
else
{
System.out.println("Kontakt nicht gefunden");
return test;
}
}
return 0;
}
public void loeschen(String nn)
{
for (int i =0; i<alle.size();i++) {
if (alle.get(i).getNachname().equals(nn)) {
System.out.println("Loeschen erfolgreich");
alle.remove(i);
}
else {
System.out.println("Loeschen fehlgeschlagen");
}
}
}
public boolean isAlpha(String text) {
for (char c : text.toCharArray()) {
if (c >= 'a' && c <= 'z')
continue;
if (c >= 'A' && c <= 'Z')
continue;
if (c == 'ö' || c == 'ß' || c == 'ä' || c == 'ü')
continue;
return false;
}
return true;
}
}
Aufgabenstellung
In der Klasse Kartei sollen die Freunde verwaltet werden. Es sollen Methoden zum Hinzufügen, zum Ändern, zum Löschen von Freunde geben. Auch möchte man nach Freunde in der Kartei suchen können (z. B. nach dem Nachnamen oder dem Schlüssel) und die Gesamtanzahl der Freunde, die gespeichert sind, ausgeben können. Berücksichtigen Sie auch mögliche Fehler, die auftreten können und behandeln Sie diese Anwender gerecht.
In der Klasse Freunde werden die Vornamen, Nachname, Geburtsdatum, Telefon, Handy, E-Mail und die Adresse (PLZ, Ort, Strasse) gespeichert. Außerdem benötigen Sie noch eine Variable, welche jedes Objekt „Freund“ eindeutig identifiziert (Schlüssel). Es gibt Methoden zum Anlegen von neuen Freunden, sowie zum Auslesen und zur Änderungen einzelner wesentlicher Attribute. Stellen Sie für diese Problemstellung nur die wirklich wichtigen Methoden zum Auslesen und Ändern der Attribute zur Verfügung. Berücksichtigen Sie auch mögliche Fehler, die auftreten können und behandeln Sie diese anwendergerecht.
In einem Mainprogramm sollen dann beispielhaft verschiedene Freunde eingegeben und in der Kartei angelegt werden. Außerdem soll man das Löschen eines Eintrags und Änderungen an einem Eintrag beispielhaft vornehmen. Am Schluss soll eine Telefonliste aller der Freunde erstellt und ausgegeben werden.
Zur Beschreibung der Klassen sollen UML-Diagramme verwendet werden. Diskutieren Sie auch kritisch die Umsetzung der Fragestellung. Was könnte man hier noch strukturell verbessern?
ich hab halt nur c++ gelernt und weiß nicht wie ich in der main auf die methode loeschen in der Kartei zugreif. Ich weiß zwar das des mit dem new operator geht aber ich leg dann ja jedesmal ne neue kartei an und greif nicht auf den Vector zu
ich hab halt nur c++ gelernt und weiß nicht wie ich in der main auf die methode loeschen in der Kartei zugreif. Ich weiß zwar das des mit dem new operator geht aber ich leg dann ja jedesmal ne neue kartei an und greif nicht auf den Vector zu
Da Du wiederholt C++ ansprichst: C++ verhält sich zu Java etwa wie ein Jumbo zu einem Sportflugzeug. Davon mal abgesehen sind sich Java und (zumindest altes) C++ bezüglich der OO doch recht ähnlich, bzgl. des Methodenaufrufs ja sogar fast identisch. Gleiches gilt für den new-Operator.
Sprich: das funktioniert in Java nicht anders als in C++ auch.
Ja des hab ich auch gemerkt war indem fall auch ne ziemlich dämlich frage als ich dann auf die Lösung gekommen bin =D
Ok inwiefern entspricht das nicht der Aufgabenstellung ?? ich mach n Fernstudium und hab keinen der mir das erklären kann ???
Tabellen auf der Konsole kann man ganz schön mit String#format oder System.out#printf machen. Beides funktioniert so wie das printf was man aus C kennt.