BlueJ Mobilnetz simulieren

sewagii

Mitglied
Hi,

Ich habe ein Problem mit einer mir gestellten Aufgabe. Ich weiß nicht woran es liegt aber alle anderen kleineren Aufgaben und Übungen habe ich echt im Schlaf gemacht. (Java Anfänger aber Programmierkentnisse durch Visual Basic).
Mein Problem ist, es gibt vorgegebene Klassen, Methoden und Konstruktoren die wir benutzen sollen.
Die Zusammenhänge zwischen den in der Aufgabe gestellten Klassen ist mir auch noch nicht wirklich klar :-(
Wer macht was mit wem und wie u.s.w.


Man soll ein Handynetz simulieren.
http://www.ld-host.de/uploads/images/9544c6cc6bb4384c4c80282e71913175.png

Aufgabe:
Handynetz simulieren welches SMS senden kann.
Ich soll mit den drei Klassen auskommen. Als Ausgangspunkt habe ich Dokumentationen (unten angehängt)

Besonders mit der Dokumentation komme ich nicht klar.
In der Dokumentation von Message wird z.B. eine leere Message angelegt (Sinn?)
Die vier Variablen verwirren mich auch:
privatejava.lang.String content - content vom Datentyp String? Aber warum steht hier noch mal der Packetpfad
Meine ersten Methoden in Message sind:

Java:
private String content; 
private String to;
private String from;
private String Datum;


public Message()
{
Datum = "aktuellesDatum";
}

public Message(contentA, toA, fromA)
{
content = contentA;
to = toA;
from = fromA
}

Jetzt hab ich aber noch die ganzen setDate, setFrom, getFrom toString Methoden deren Verwendung mir unklar ist :-\
Mit toString sollen vermutlich content, to, from und date in eine Variable gespeichert werden.
Aber warum man das macht und wo ist mir auch nicht klar.
Die Methoden sollen dann vermutlich irgendwie mit Handy aufgerufen werden..




Dokumentation zu Message:

Java:
public class Message
extends java.lang.Object

Klasse kapselt eine Sms Message für das simple SmsHandy-Projekt 


Field Summary
private  java.lang.String 	content
          Nachrichteninhalt
private  java.util.Date 	date
          Sendedatum
private  java.lang.String 	from
          Absender Rufnummer
private  java.lang.String 	to
          Empfänger Rufnummer
 
Constructor Summary
Message()
          Legt eine leere Message mit aktuellem Datum an
Message(java.lang.String content, java.lang.String to, java.lang.String from, java.util.Date date)
          Legt eine initialisierte Message an.
 
Method Summary
 java.lang.String 	getContent()
           
 java.util.Date 	getDate()
           
 java.lang.String 	getFrom()
           
 java.lang.String 	getTo()
           
 void 	setContent(java.lang.String content)
           
 void 	setDate(java.util.Date date)
           
 void 	setFrom(java.lang.String from)
           
 void 	setTo(java.lang.String to)
           
 java.lang.String 	toString()
          Gibt die vollständige Message als String zurück.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail
content

private java.lang.String content

    Nachrichteninhalt

to

private java.lang.String to

    Empfänger Rufnummer

from

private java.lang.String from

    Absender Rufnummer

date

private java.util.Date date

    Sendedatum

Constructor Detail
Message

public Message()

    Legt eine leere Message mit aktuellem Datum an

Message

public Message(java.lang.String content,
               java.lang.String to,
               java.lang.String from,
               java.util.Date date)

    Legt eine initialisierte Message an.

    Parameters:
        content - Nachrichtentext
        to - Empfänger
        from - Absender
        date - Erstellungsdatum

Method Detail
toString

public java.lang.String toString()

    Gibt die vollständige Message als String zurück. Etwas trickreich ist die Ausagabe des Datums. Hierfür wird ein Objekt der Klasse DateFormat verwendet (siehe Dokumentation von DateFormat in der Java Standardbibliothek).
    DateFormat.getDateTimeInstance().format(date)

    Overrides:
        toString in class java.lang.Object

    Returns:
        Stringrepräsentation der Message

getDate

public java.util.Date getDate()

    Returns:
        the date

setDate

public void setDate(java.util.Date date)

    Parameters:
        date - the date to set

getContent

public java.lang.String getContent()

    Returns:
        the content

setContent

public void setContent(java.lang.String content)

    Parameters:
        content - the content to set

getTo

public java.lang.String getTo()

    Returns:
        the to

setTo

public void setTo(java.lang.String to)

    Parameters:
        to - the to to set

getFrom

public java.lang.String getFrom()

    Returns:
        the from

setFrom

public void setFrom(java.lang.String from)

    Parameters:
        from - the from to set

Dokumentation zu Handy


Java:
java.lang.Object
  extended by SmsHandy

public class SmsHandy
extends java.lang.Object

Diese Klasse simuliert ein Handy, das Sms senden und empfangen kann. Sms können (als kleine Besonderheit in diesem Projekt) entweder über den Provider gesendet werden, oder auch direkt an ein anderes Handy.


Field Summary
private  java.lang.String 	number
          die eigene Rufnummer
private  Provider 	provider
          der Provider, der Nachrichten weiterleitet
private  java.util.ArrayList<Message> 	received
          empfangene Nachrichten
private  java.util.ArrayList<Message> 	sent
          gesendete Nachrichten
 
Constructor Summary
SmsHandy(java.lang.String number, Provider provider)
          Konstruktor, der die Rufnummer und den Provider initialisiert.
 
Method Summary
 java.lang.String 	getNumber()
           
 Provider 	getProvider()
           
 void 	listReceived()
          gib eine Liste aller empfangenen Nachrichten aus
 void 	listSent()
          gib eine Liste aller gesendeten Nachrichten aus
 void 	receiveSms(Message message)
          empfängt eine Nachricht und legt sie in der Liste der empfangenen Nachrichten ab.
 void 	sendSms(java.lang.String to, java.lang.String content)
          Schickt eine Sms ueber den Provider
 void 	sendSmsDirect(SmsHandy peer, java.lang.String content)
          Schickt eine Nachricht unter Umgehung des Providers direkt an ein anderes SmsHandy
 void 	setProvider(Provider provider)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail
sent

private java.util.ArrayList<Message> sent

    gesendete Nachrichten

received

private java.util.ArrayList<Message> received

    empfangene Nachrichten

number

private java.lang.String number

    die eigene Rufnummer

provider

private Provider provider

    der Provider, der Nachrichten weiterleitet

Constructor Detail
SmsHandy

public SmsHandy(java.lang.String number,
                Provider provider)

    Konstruktor, der die Rufnummer und den Provider initialisiert. Das neu angelegte Handy registriert sich außerdem bei seinem Provider.

    Parameters:
        number - die zugewiesene Rufnummer
        provider - der Sms Provider

Method Detail
sendSms

public void sendSms(java.lang.String to,
                    java.lang.String content)

    Schickt eine Sms ueber den Provider

    Parameters:
        to - Rufnummer des Empfängers
        content - Inhalt der Nachricht

sendSmsDirect

public void sendSmsDirect(SmsHandy peer,
                          java.lang.String content)

    Schickt eine Nachricht unter Umgehung des Providers direkt an ein anderes SmsHandy

    Parameters:
        peer - das empfangende Handy
        content - Inhalt der Nachricht

receiveSms

public void receiveSms(Message message)

    empfängt eine Nachricht und legt sie in der Liste der empfangenen Nachrichten ab.

    Parameters:
        message - empfangene Nachricht

listSent

public void listSent()

    gib eine Liste aller gesendeten Nachrichten aus

listReceived

public void listReceived()

    gib eine Liste aller empfangenen Nachrichten aus

getNumber

public java.lang.String getNumber()

    Returns:
        the number

getProvider

public Provider getProvider()

    Returns:
        the provider

setProvider

public void setProvider(Provider provider)

    Parameters:
        provider - the provider to set

Dokumentation zu Provider

Java:
Class Provider

java.lang.Object
  extended by Provider

public class Provider
extends java.lang.Object

Die Klasse simuliert einen Sms Service Provider, der für seinen Kunden Sms empfangen und weiterleiten kann. Der Provider verwaltet alle seine Kunden in der subscriber Liste.



Field Summary
private  java.util.ArrayList<SmsHandy> 	subscriber
          Collection Objekt, das die Kunden verwaltet
 
Constructor Summary
Provider()
          Provider Objekt anlegen und notwendige Felder initialisieren
 
Method Summary
 void 	register(SmsHandy smsHandy)
          Registriert ein neues Handy in der Kundendatenbank
 boolean 	send(Message message)
          Sende die Sms an den in der Nachricht angegebenen Empfänger.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail
subscriber

private java.util.ArrayList<SmsHandy> subscriber

    Collection Objekt, das die Kunden verwaltet

Constructor Detail
Provider

public Provider()

    Provider Objekt anlegen und notwendige Felder initialisieren

Method Detail
send

public boolean send(Message message)

    Sende die Sms an den in der Nachricht angegebenen Empfänger. Wenn dieser den Empfänger anhand der Nummer im to-Feld identifizieren kann, wird die Message zugestelt.

    Parameters:
        message - zu sendende Nachricht 
    Returns:
        gibt an, ob Nachricht gesendet werden konnte

register

public void register(SmsHandy smsHandy)

    Registriert ein neues Handy in der Kundendatenbank

    Parameters:
        smsHandy - das neue Handy

Das ist ungefähr die Aufgabenstellung. Für irgendwelche Lösungsansätze Tipps bin ich offen.
Programmieren und Lösungen finden macht mir echt Spaß aber hier seh ich wirklich nicht durch :-\

mfg
 
Zuletzt bearbeitet:
S

SlaterB

Gast
nebenbei mal wieder in einem Thema erwähnt:
'Aufgabe - Probleme bei der Umsetzung' ist wirklich ein schlechter Titel,
du kannst davon ausgehen dass in fast allen Themen jemand Probleme bei irgendeiner Umsetzung hat,
ob es eine Aufgabe oder sonstiger Spaß ist bringt auch nicht viel Information

hilfreich ist z.B. eine inhaltliche Beschreibung, Thema des Programms

edit: wie ich gerade sehe steht auch im Posting nicht viel mehr als die Aufgabenstellung, verschoben
 

sewagii

Mitglied
Stimmt der Titel ist echt ziemlich schlecht gewählt :-\

Edit: Ich hasse eigentlich Forenbeiträge wo nur die Aufgabe steht und sonst nicht viel dabei :-\
Aber jetzt musste ich leider selber mal einen Verfassen.
 
Zuletzt bearbeitet:

sewagii

Mitglied
Also meine Überlegungen waren:

Provider: Alle Kunden in einer ArrayListe oder Map
SMS-Handy: Jeder Kunde ist eine Instanz von Handy mit eigener Nummer, Name u.s.w. und unabhängig von der Liste von Provider.
Message: dient anscheinend nur um Nachrichten zu erstellen. Es müssen nicht alle Methoden u.s.w. aus der Dokumentation von Massage benutzt werden.


Um eine SMS zu verschicken greift die Klasse Handy auf die Klasse Message zu und erstellt eine Nachricht (Instanz von Message).
Die SMS kann entweder an ein anderes Handy oder an den Provider verschickt werden.
Wenn Handy zu Handy, dann muss die Instanz Handy-X irgendwie an die Instanz Handy-Y die Nachricht schicken.

Wenn Handy zu Provider zu Handy, dann muss Handy x an Provider was schicken. Der Provider muss checken ob Handy X in der Liste ist, wenn Ja muss er checken ob Handy y überhaupt existiert und dann die Nachricht an Y weiterschicken.

Würdet ihr das auch so sehen?

Was hat dieser Ausdruck hier zu bedeuten?
"void register(SmsHandy smsHandy)"

Es ist eine Methode Names register welche den Parameter SmsHandy vom Typ SmsHandy hat?
 
Zuletzt bearbeitet:

earlgrey_tea

Aktives Mitglied
Ok erstmal zu deiner letzten Frage:

Was hat dieser Ausdruck hier zu bedeuten?
"void register(SmsHandy smsHandy)"

In der Dokumentation zu Handy ist gefordert, dass sich dieses bei einem Provider registrieren muss ('Handy' Zeile 80). Also ruft das Handy beim Provider die Methode register() auf und sagt dem Provider, dass es in Zukunft bei eingehenden Anrufen gerne bedient werden möchte --falls es Adressat einer Nachricht ist.

Der Vorgang des Registrierens müsste so vonstattengehen:

Java:
Provider p = new Provider();
SmsHandy h = new SmsHandy();
p.register(h);

Wenn jetzt also ein Anruf/ SMS beim Provider eingeht, dann schaut er in seiner Liste nach ob er ein Gerät mit der entsprechenden Nummer registriert hat.

Ich hoffe ich habe mich verständlich ausgedrückt.
Viele Grüße
earlgrey_tea
 
Zuletzt bearbeitet:

earlgrey_tea

Aktives Mitglied
Zu deiner ersten Frage(n):

sewagii hat gesagt.:
In der Dokumentation von Message wird z.B. eine leere Message angelegt (Sinn?)
Die vier Variablen verwirren mich auch:
privatejava.lang.String content - content vom Datentyp String? Aber warum steht hier noch mal der Packetpfad

Warum da eine leere Message angelegt werden soll weiß ich auch nicht. Vielleicht ein Defaultkonstruktor. Ich würds einfach implementieren, wenn es deine(n) Lehrer(in)/ Dozent(in) glücklich macht. Hmm .... es macht halt nur Sinn wenn ich meine Nachricht nicht mit dem Konstruktor anlegen will, sondern folgendermaßen:

Java:
Message m = new Message(); 
m.setContet(<was auch immer>);
m.setTo(<Wohinauch immer>);
m.setFrom(<Woher auch immer>);

Einziger Vorteil den ich hierbei sehe ist, dass das Datum automatisch gesetzt wird.


Java:
private.java.lang.String content

Muss IMHO angegeben werden, da es sich um eine Dokumentation handelt und die Datentypen nicht als bekannt vorausgesezt werden können. Ich denke das kommt aus der Ecke SoftwareEngeneering. Mit der Vollständigen Pfadangabe kann man dann auch in die API/Dokumentation von Java schauen.


EDIT
Bezüglich:
Java:
register(<SmsHandy>)
Schau dir mal das Tutorial zum Observer Pattern aus dem Forum hier an. Das könnte sehr aufschlussreich sein.
 
Zuletzt bearbeitet:

Hans91

Mitglied
Langsam kommt ich etwas Vorwärts. Aber KA was einige Codes in der Dokumentation sollen?

Message:

private String content;
private String to;
private String from;
private Date date;


Java:
public Message(String content, String to, String from)
{
this.content = content;
this.to = to;
this.from = from;
date = new Date();
}


public String toString()
{
return (content + " " + to + " " + from);
}
>>Für was brauch ich hier "public Message(String content, String to, String from)" ich kann doch gleich.

Java:
public String toString(String content, String to, String from)
{
return (content + " " + to + " " + from);
}

Aber ich kann nix formatieren und alles muss Hintereinander geschrieben werden :-\




SMS-Handy:


Java:
public void receiveSms(Message message)
{
Message[] receiveSms = {message};
System.out.println(receiveSms[0]);

}
 
Zuletzt bearbeitet:

Kababär

Top Contributor
Wenn nur eine leere Message ist oder meint dein Lehrer vielleicht, falls die Nachricht leer ist?

Wenn sie nämlich leer ist, muss man sie ja auch nicht abschicken. Oder kann nicht abgeschickt werden.

Vielleicht einfach eine Art Default-Function.

Ansonsten find ich das, was earlgrey-tea schon sagte, hilfreich.

mfG
dAil
 

Hans91

Mitglied
Ich kapiere erstmals, dass die Klasse Message gar keine wirkliche Eingaben haben darf.
Die Werte müssen von SMS-Handy übernommen werden.



Java:
public Message(String content, String to, String from)
{
this.content = content;
this.to = to;
this.from = from;
toString();
}

public String toString()
{
System.out.println(content+to+from);
return (content + to + from);
}

Java:
public SmsHandy(String number, Provider provider)
{
this.number = number;
this.provider = provider;
}

public void sendSms(String to, String content)
{
Message Hans = new Message(content,to,number);
}

Jetzt würden auch die ganzen Set und Get Methoden Sinn machen. Die könnten zur Änderung der Werte da sein. Aber da keine Instanz von Message in der BlueJ Leiste erscheint macht es schon wieder keinen Sinn, da ich die Get und Set Methoden nirgendwo anwenden kann.
Aber der jetzige Code würde auch erklären warum auf dem Bild keine Instanz von Message zu sehen ist.
 

sewagii

Mitglied
Ich hab jetzt ein Problem mit neu registrierten Handys über den Providers.
1. werden die wieder nicht unten in der leiste angezeigt
und
2.

Java:
public class Provider
{
private ArrayList<SmsHandy> subscriber;


public Provider()
{
subscriber = new ArrayList<SmsHandy>();
}

public void register(String number, Provider provider)
{
SmsHandy smsHandy = new SmsHandy(number, provider);
subscriber.add(smsHandy);
}

public void AnzahlHandys()
{
System.out.println(subscriber);
}

Und wenn ich mir Anzahl Handys ausgeben lasse kommt sowas raus:
[SmsHandy@81e9d3].
 

earlgrey_tea

Aktives Mitglied
Das kann auch nicht gehen ;)

Du versuchst gerade ein ganzes Array (subscriber ist ein array) zu printen. Wenn du dir die Elemente ausgeben lassen willst dann mach am besten sowas hier:

Java:
for (int i = 0; i < subscriber.size(); i++){
      System.out.println(subscriber.get(i));
}

Schönen Sonntag noch
earlgrey_tea
 

sewagii

Mitglied
Aber in der Klasse SmsHandy geht es komischerweise. Da wird auch alles aufgelistet.

Java:
public ArrayList<Message> sent;

SmsHandy
public SmsHandy(String number, Provider provider)
{
sent = new ArrayList<Message>();
this.number = number;
this.provider = provider;
}

public void sendSms(String to, String content)
{
Message message = new Message(content,to,number);
sent.add(message);
}

public void listSend()
{
System.out.println(sent);
}


Provider:
Java:
public ArrayList<SmsHandy> subscriber;

public Provider()
{
subscriber = new ArrayList<SmsHandy>();
}

public void register(String number, Provider provider)
{
SmsHandy smsHandy = new SmsHandy(number, provider);
subscriber.add(smsHandy);
}
 

earlgrey_tea

Aktives Mitglied
Das Problem an deinen Klassen ist die toString Methode. Sie wird jedes Mal implizit mitaufgerufen, wenn du dein Objekt als String ausgeben lassen willst. So z.B. bei println.

Im Defaultfall wird bei Objekten dir Referenz die auf sie gehalten wird ausgegeben. Magst du eine anderen Ausgabe musst du diese Methode in allen Klasse die eine benutzerdefinierte Ausgabe erhalten sollen diese Methode überschreiben.

Ich habe dir mal ein lauffähiges Beispiel angehängt. Unter Umständen muss du noch das Paket ändern oder löschen.

Provider:
Java:
package sewagiiFrage;

import java.util.ArrayList;

public class Provider {
	
	private ArrayList<SmsHandy> subscriber;
	 
	public Provider()
	{
		
		subscriber = new ArrayList<SmsHandy>();
		
	}
	 
	public void register(String number, Provider provider)
	{
		
		SmsHandy smsHandy = new SmsHandy(number, provider);
		subscriber.add(smsHandy);
	
	}
	
	public void AnzahlHandys()
	{
		
		System.out.println(subscriber);
		
	}
	
	
}

SmsHandy:
Java:
package sewagiiFrage;

import java.util.ArrayList;

public class SmsHandy {

	private ArrayList<Message> sent;
	private String number;
	private Provider provider;

	public SmsHandy(String number, Provider provider)
	{
		
		sent = new ArrayList<Message>();
		this.number = number;
		this.provider = provider;
		
	}
 
	public void sendSms(String to, String content)
	{
		
		Message message = new Message(content,to,number);
		sent.add(message);
		
	}
 
	public void listSend()
	{
		
		System.out.println(sent);
		
	}
	
	/** 
	 * Die nachfolgende Methode überschreibt toString()
	 */
	@Override
	public String toString(){
		
		String providerName; 
		providerName = provider.getClass().getCanonicalName();
		return "\n Nummer: " + number  + "\n Provider: " + providerName;
		
	}
	
	
	/**
	 * Main Methode
	 * @param args
	 */
	public static void main(String[] args){
		
		Provider tmobile = new Provider();
		SmsHandy handy = new SmsHandy("987654321", tmobile);
		
		tmobile.register("123456789", tmobile);
		tmobile.AnzahlHandys();
		
		handy.sendSms("987654321", "Hallo Welt");
		handy.listSend();
	}
	
}

Message:
Java:
package sewagiiFrage;

public class Message {

	private String from;
	private String to;
	private String content;
		
	public Message(String content, String to, String from) {
		
		this.content = content;
		this.to = to;
		this.from = from;
		
		}
	
		/*
		 * (non-Javadoc)
		 * @see java.lang.Object#toString()
		 */
		@Override
		public String toString()
		{
			
			return ("\n Inhalt: " + content + "\n An: " + to + "\n Von: " + from +"\n");
				
		}
	}


So das sollte es jetzt sein. Ansonsten gewöhn dir mal an, Atrribute generell als private zu kennzeichnen und nur über die entsprechenden getter und setter Methoden zu ändern. Das ist Konsens in der objektorientierten Programmierung.

Welche Klasse bist du eigentlich? Das kommt mir alles sehr schwer vor, wenn man nicht gerade im Grundstudium (Fach-/Wirtschafts-)Informatik oder Leistungskurs 13. Klasse ist.

Viele Grüße
earlgrey_tea
 

sewagii

Mitglied
Ich studiere erstes Semester Informatik und das ist eine etwas größere Hausaufgabe.
Die Schwierigkeit im Vergleich zu den anderen HA ist ehrlich gesagt extrem :-\
Deswegen frage ich mich ob ich auch alles richtig mache.
Für die anderen HA haben wir immer eine Woche Zeit und die mach ich mit Links (es gibt auch Leute die noch nie programmiert haben)


In den letzten Vorlesungen wurde uns gerade erst beigebracht wie man einen Array erstellt und ein Feld wieder ausgibt. Aber durch das ganze Klassenübergreifende Zeug hier blick ich noch nicht durch und war auch noch nie im Gespräch.
 

earlgrey_tea

Aktives Mitglied
Hmm das ist ja nicht so schön... Also falls du auf der Suche nach nem guten Buch zu Java bist, das dich nicht mit 700 Seiten erschlägt, dann kann ich dir auf jeden Fall nachfolgendes empfehlen:

Code:
Marco Block: Java-Intensivkurs: In 14 Tagen lernen Projekte erfolgreich zu realisieren

14 Tage wird nicht klappen, das kann ich dir gleich sagen... aber man kriegt nen guten Überblick. Zu den Übungsaufgaben im Buch gibt der Autor in seinem eigenen Forum auch Lösungshinweise und Tipps.

Viele Grüße
earlgrey_tea


Ps.: Warum müsst ihr denn BlueJ benutzen. :noe: Das ist sch****. Das wollten die uns auch immer andrehen... Ich finde es verwirrt mehr als dass es hilft.
 

sewagii

Mitglied
BlueJ soll "angeblich" gut für Einsteiger geeignet sein, weil man dort selber Einrücken muss und keine Hilfen wie in einer ordentlichen Entwicklungsumgebung gibt. z.B. System.out.(Alle Möglichkeiten aufgelistet).
Wir steigen im zweiten Semester aber schon auf ein anderes Programm um.
 

sewagii

Mitglied
Ich bin jetzt schon recht weit :)
Habe nur noch ein Problem die Sms direkt zu verschicken.
Normalerweise müsste ich die Methode in der Instanz Handy2 von der Instanz Handy 2 aufrufen.
Das hab ich auch versucht umzusetzen.

Java:
import java.util.ArrayList;



public class SmsHandy
{

public String number;
public Provider provider;
public SmsHandy peer;


public ArrayList<Message> sent;
public ArrayList<Message> received;


public SmsHandy(String number, Provider provider)
{
sent = new ArrayList<Message>();
received = new ArrayList<Message>();

this.number = number;
this.provider = provider;

}

public void sendSms(String to, String content)
{
Message message = new Message(content,to,number);
sent.add(message);
provider.leiteWeiter(message);
}

public void sendSmsDirect(SmsHandy peer, String content)
{
String to = "WW";
Message message = new Message(content,to, number);
sent.add(message);
peer.receiveSms(message);
(Instanzname.Methode(übergabe von Message))
}


public void listSend()
{
System.out.println(sent);
}

public void listReceived()
{
System.out.println(received);
}

}

Es gibt eine Null Pointer Exeption:
java.lang.NullPointerException
at SmsHandy.receiveSms(SmsHandy.java:48)
at SmsHandy.sendSmsDirect(SmsHandy.java:42)

Edit: Habs gerade gemerkt hatte einen Fehler im Code.
Müsste sein:

Java:
public void receiveSms(Message message)
{
received.add(message);
}
 
Zuletzt bearbeitet:
S

SlaterB

Gast
eine Methode receiveSms() gibts im Code gar nicht, schon gar nicht genau 6 Zeilen später, beachte die Zeilennummern im StackTrace,
und was soll
> (Instanzname.Methode(übergabe von Message))
im Code bedeuten?
hast du noch anderen lauffähigen Code?

edit:
dann wird wohl received null sein,
gibt es einen (weiteren nicht geposteten..) Konstruktor in welchem die Liste nicht gesetzt wird?

vollständige Programme würden immer helfen..
 

sewagii

Mitglied
Upps, muss beim reimkopieren irgendwie verloren gegangen sein.

Java:
public void receiveSms(Message message)
{
received.add(message);
}
 
S

SlaterB

Gast
das hattest du in deinem vorherigen Posting schon editiert, mein edit mit 'dann' sollte andeuten dass ich darauf reagiert habe,
sonst hätte ich den Rest auch kaum schreiben können

nun postest du also keine neue Information, reagierst nicht auf meine Hinweise -> das Thema ist an einem toten Punkt
soll es geschlossen werden oder wirst du noch was anderes antworten?
ich kann ja kaum mehr schreiben als den Quatsch gerade oder die vorherige Antwort nochmal
 

Neue Themen


Oben