Versteht nicht wieso mein java code nicht funktioniert (sehr simpel)?

... komplette Frage anzeigen

7 Antworten

Was hast du denn eingegeben? Wenn du nur ein Wort eingibst wird er bei ain[1] abschmieren da ain nur ein Element hat du aber auf 2. zugreifen willst.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von MaXX37
05.05.2016, 23:35

Genau das passiert.
Aber sollte er dann nicht einfach in die else Verzweigung springen?

0
Kommentar von okarin
05.05.2016, 23:45

Oder schreib am besten statt System.out.println(cmd);

System.out.println(ain[1]);

Dann brauchst du gar keine Variable cmd mehr.

0

Du solltest deinen Code in Pastbin o.ä. hochladen, wurde dir aber schon gesagt. Dadurch wäre es leichter für uns den Code zu lesen und wir könnten z.B. über Zeilennummern sprechen. Ich denke dein Problem liegt in der Zeile in der du cmd das zweite Feld des Arrays zuweist. Wenn du jetzt dein String kein Leerzeichen enthält, hat der Array nur ein Feld. Wenn der Array nur ein Feld hat und du auf das zweite Feld zugreifen willst, gibt dir der Compile eine ArrayIndexOutOfBounds Exeption aus.

Es gibt in deiner Konsole ein paar Dinge die du unbedingt anders machen solltest. Ich kann dir mal zeigen wie man eine richtige Konsole Programmiert. Skype?

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von MaXX37
05.05.2016, 23:48

Wann anders mal gerne :) 

0

http://pastebin.com/gRFTnScW

So sollte es am besten Aussehen, für die Bessere Leserlichkeit 
Der Fehler lag darin, dass eine } zu viel war,
ich Zeile 23 und Zeile 27

Vergiss nicht den Scanner wieder zu schließen/beenden

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von MaXX37
05.05.2016, 23:30

Danke erstmal ;)

Wenn ich die Klammer löscht, bekomme ich aber direkt eine Fehlermeldung anzeigt, da die Methode und die Klasse nicht mehr geschlossen sind.
Wie beende Ich den Scanner?

0

Da das Rätsel ja schon gelöst wurde noch 3 Tipps für die Zukunft:

1) Wenn schon ein Fehler kommt, sollte man auch sagen WAS für ein fehler. Außerdem wäre es hilfreich zu wissen WAS du da überhaupt eintippst, dass es zum fehler kommt!

2) Bitte benutze vorher den Debugger. Für solche Fehlersuche ist er geschaffen worden!

3) Bitte bitte bitte: GANZ wichtig: Nächstemal den Kode ordenlich formatieren! So kann keiner was lesen, wo welche Schleife auf und zu geht! Das verwirrt nur. Oder einfach ein Screenshot deiner IDE, wenn der Kode kurz ist! Aber bei sowas hier bekomme ich Augenkrebs!

Gruß
Omni

Antwort bewerten Vielen Dank für Deine Bewertung

Hallo!

Wenn du einen Programmfehler (z.B. "Index Out Of Range") abfangen willst, musst du es in einen  Try{,,,} Catch{...} - Block einbauen, um die Exception abzufangen.

Gruß

Antwort bewerten Vielen Dank für Deine Bewertung

Soweit ich es mal durchzähle, ist am Ende eine Klammer zu viel, aber:
Die Formatierung ist unter aller Sau und daher wird es unübersichtlich.

Gerade als Anfänger solltest du dir UNBEDINGT einen übersichtlichen Quelltext mit vielen Kommentaren angewöhnen.

Und IMMER den gemeldeten Fehler benennen.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von MaXX37
05.05.2016, 22:49

Ist keine Klammer zu viel. Das ist ja nur für mich, unnötig für so ein Miniprogramm Kommentare zu schreiben meiner Meinung nach. 

0
Kommentar von MaXX37
05.05.2016, 22:50

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at org.kraess.konsole.Konsole.main(Konsole.java:13) 

Das ist die Fehlermeldung.

0
Kommentar von MaXX37
05.05.2016, 23:02

Extra für Dich jetzt noch mal mit Anmerkungen.
Kannst du jetzt etwas konstruktives beitragen :)

public class Konsole {

public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);

String in = sc.nextLine(); //Eingabe
String[] ain = in.split(" "); //String teilen
String cmd = ain[1];// Das zweite Wort

if(in.contains("echo")){
//Ist in der Texteingabe echo erhalten?
if (ain.length>1)
{System.out.println(cmd);}
//Steht echo alleine oder mit einem anderen Wort

//Wenn etwas hinter echo steht wird dies ausgeben (ohne "echo"

else {System.err.println("Echo needs atleast one more argument");}

}
//Ansonsten fehlermeldung

else if (in.equalsIgnoreCase("exit")){System.exit(0);}
//Bei exit beenden

else {System.err.println("Command not found!");}
//Bei anderen Eingaben

0
Kommentar von okarin
05.05.2016, 23:21

Ok wie wärs wenn du einfach mal alles worum du ne geschweifte Klammer machst mit nem Tabulator einrückst sonst kann man des wirklich nicht lesen. Ich geb zu Kommentare musst du nicht unbedingt verwenden aber eine geeignete Formatierung solltest du immer verwenden.

0

Bitte Error und Code auf hastebin, so kann man das nicht lesen.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von MaXX37
05.05.2016, 22:40

hastebin?

0
Kommentar von MaXX37
05.05.2016, 22:53

Wie soll man wissen, dass das eine Website ist, wenn man das nicht kennt??

Warum sind alle so unhöflich heute.

Cliches über Informatiker scheinen nicht sehr weit hergeholt.

0
Kommentar von androhecker
05.05.2016, 22:57

Muss man wissen dass es eine Website ist? Ich glaube nicht, man gibt es einfach auf Google ein und sieht sofort was es ist. Wenn nicht jeder seine total schwachsinnige Frage für die man die Antwort auf Google 10 mal schneller gefunden hätte hier stellen würde, wären die meisten auch netter. Du hättest deinen Error (den der unter einer anderen Antwort steht) auf Google eingeben können und hättest nach 5 Sekunden gewusst was los ist.

0

Was möchtest Du wissen?