Variablen Provided text for message may not be null

Clemens4323

Mitglied
[CODE lang="java" title="Code"]public class beispiel {
public String[] name;
public beispiel {
name = new String[11];
if(args[0].equalsIgnoreCase("settext")) {

Integer wich = new Integer(args[1]);
name[wich] = args[2];
}else if(args[0].equalsIgnoreCase("gettext")) {

Integer wich = new Integer(args[1]);
channel.sendMessage(name[wich]).queue();
}
}
}[/CODE]

Ich bin noch recht neu in Java und habe ein Problem mit einem Array. Ich mache grade einen Discordbot wo mit .settext "zahl" "Nachricht" und mit .gettext "zahl" und dann kommt eine Nachricht, mit der vorher eingeben, Nachricht.
.settext funktioniert, aber wenn ich .gettext mache, kommt die Fehlermeldung: "Provided text for message may not be null"
 
Hi. Wenn dieser Code funktioniert, dann fress ich einen Besen. Das ist ja noch nicht mal gültige Java-Syntax. Auch wird bei "settext" nichts gesendet, von daher kann die Fehlermeldung dort auch nicht auftreten. Von dem, was man hier erahnen kann, würde ich mal sagen, dass Du das Array zwar erzeugst, sich in dem Array aber keine Namen befinden und daher beim Versenden versucht wird, null zu verschicken. Zeig mal Deinen tatsächlichen Code, so kann man da wenig sagen.
 
Java:
public class beispiel {
public String[] name;

public void onMessageReceived(MessageReceivedEvent event) {
        name = new String[11];
        
        
        
        
        String message = event.getMessage().getContentDisplay();

        if (event.isFromType(ChannelType.TEXT)) {
            TextChannel channel = event.getTextChannel();

            if (message.startsWith(".")) {
                String[] args = message.substring(1).split(" ");
                if (args.length > 0) {
                    if(args[0].equalsIgnoreCase("settext")) {
        
                        Integer wich = new Integer(args[1]);
                        name[wich] = args[2];
                        System.out.println(name[wich]);
                       //Da wird die nachricht ausgegebn die man eingegeben hat
                    }else if(args[0].equalsIgnoreCase("gettext")) {
                        
                        Integer wich = new Integer(args[1]);

                           System.out.println(name[wich]);
                         //Da wird null ausgegeben
                        channel.sendMessage(name[wich]).queue();
                }
                    
            }

        }
            }
Die Fehlermeldung kommt dann wenn ich .gettext 1 eingeben auf discord
 
Ja, in Zeile 5 legst Du ein neues Array an (dessen Elemente alle null sind) und in Zeile 30 versuchst Du, eines dieser Elemente (das in jedem Fall null ist) zu versenden.
 
Mmh, aber wenn ich settext 1 Hallo mache, ist doch der erste Array Slot mit "Hallo" belegt und wenn ich dann gettext 1 machen sollte doch "Hallo" ausgegeben werden, oder?
 
Es klappt jetzt Danke🙂 . Ich habe nun jetzt noch ein Problem ich splite ja mein String in der 16Zeile also wenn ich .settext 1 "Hallo hi" dann ist Hallo args[2] und Hi args[3] und ich schreibe in den Array "name" nur args[2]. Aber ich hätte gern das in args[2] Hallo und hi steht oder irgendwie anders
 
Du kannst split zusätzlich ein Limit übergeben, in deinem Fall bräuchtest du 3 🙂

Allerdings solltest du aufpassen mit split(" "), zB wenn man mal zwei Leerzeichen nutzt.
 

Zurück
Oben