Hier ist die Message
Klasse I erstellt:Wie zu debuggen, warum die Java-Nachrichtenausgabe immer Null ist?
public class Message {
static String toString;
static String sender;
static String recipient;
static String messageBody ;
public Message(String Sender, String Recipient){
sender = Sender ;
recipient = Recipient ;
messageBody = "";
}
public String getSender(String s){
sender = s;
return sender;
}
public String getRecipient(String r){
recipient = r;
return recipient;
}
public void append (String a){
a = messageBody +a;
}
public void toString (String m){
messageBody = m;
m = ("From: " + sender + "\nTo: "+ recipient+"\n" + "\n" + messageBody);
System.out.print(m);
}
}
Es folgt die main
Methode. Ich muss mit toString()
Methode drucken.
import java.util.Scanner;
public class Lab8 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Message mess1 = new Message (null, null);
Scanner keyboard = new Scanner (System.in);
String Sender1= Message.sender;
String recipient1 = Message.recipient;
String message = Message.messageBody ;
System.out.println ("Input Sender Name: ");
Sender1 = keyboard.next();
System.out.println ("Input Recipent Name: ");
recipient1 = keyboard.next();
do {
System.out.print ("Input Message: ");
message = keyboard.next();
} while (!message.equals("***"));
System.out.print(Message.toString);
}
}
Dies druckt null
jedes Mal. Ich muss auch die Append-Methode einschließen, die es mir erlaubt, den Nachrichtentext nach jeder Zeile zu ändern.
Obwohl dies kompiliert und ausgeführt wird, gibt es hier schwerwiegende Probleme. Das größte Problem ist, dass Message 'statische' Felder verwendet, wenn Sie wirklich Instanzfelder wollen: Löschen Sie' static' aus der Message-Klasse. – Bohemian
Ich habe, dann setze ich eine Rückgabevariable und ich habe immer noch das gleiche Problem. – Cotypiechocki