Weil man die erzeugte scanner-Instanz einfach nochmal verwenden kann.
Das Problem ist, dass du glaube ich dir noch nicht den Weg überlegt hast den du gehen möchtest.
Was du machst:
Scanner anlegen. Ok
Dann der Fehler mit der eingabe, denke ich korrigierst du.
Dann instantiierst du einen neuen Scanner mit einem String der aus einem anderen Scanner kommt. Woher kommt dieses Konstrukt? Und vor allem, was soll da rauskommen?
Lies doch einfach nextLine in eine String variable und dann schau mal weiter
Wieso schreibst du immer zentriert ich finde das extrem anstrengend zu lesen
Das beste wäre wenn du ganz simpel beginnst
public static void main(String[] args) throws IOException
{
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
System.out.print("Gib was ein: ");
String eingabe = br.readLine();
System.out.println("Du hast " + eingabe + " eingegeben.");
}```
Edit: Hier http://www.javabeginners.de/Ein-_und_Ausgabe/Scanner.php ist auch ein gutes Beispiel, inkl einer while Schleife, die solange läuft bis man q drückt.
Ich habe jetzt noch mal ein wenig, getreu dem Beispiel weitergemacht und im Prinzip funktioniert jetzt alles. Nur in der Realität noch nicht…
Ich habe wieder versucht die Do-While Schleife reinzubasteln. Doch jetzt gibt mir das Programm nur noch die gleiche (antwort(eingabe)); in unendlicher weise aus. Wahrscheinlich fehlt da nur eine Zeile Code, bloß welche :o.
public class Minion_Main {
public static void main(String[] args) throws IOException{
//Begruessung
System.out.println("Hallo.");
//Initialisierung
boolean beenden=false;
InputStreamReader input = new InputStreamReader(System.in);
BufferedReader aktuell = new BufferedReader(input);
String eingabe = aktuell.readLine();
//System.out.println(antwort(eingabe));
while (!beenden){
if (!eingabe.contains("keks"))
System.out.println(antwort(eingabe));
else {
System.out.println("Auf wiedersehen.");
beenden=true;
}
}
}
private static String antwort(String eingabe){
String antwort = ("aha " + eingabe);
return antwort;
}
}
[QUOTE=BeBunny]Doch jetzt gibt mir das Programm nur noch die gleiche (antwort(eingabe)); in unendlicher weise aus. Wahrscheinlich fehlt da nur eine Zeile Code, bloß welche :o.[/QUOTE]Verdammt dicht dran. Hier mal dein Code “aufgeräumt”. Evtl kommst du selbst drauf, warum sich eingabe nicht ändert ;)```
public class Minion_Main {
public static void main(String[] args) throws IOException{
// ...
String eingabe = aktuell.readLine();
while (!beenden){
if (!eingabe.contains("keks")){ ... }
}
EDIT: wenn du deinen code in [java ] ``` einbettest (statt in [code ]
), dann kann man ihn auch hier im Forum super lesen.
Schau dir mal den Link an den ich gepostet hab, dort ist auch ein Beispiel mit einer while-Schleife.
Java-Code kannst du mit Java-Tags hier einfügen dann hat man auch Syntax-Highlighting. Du solltest auch auf richtige Formatierung und auf die Klammern achten, sonst kann das ganze ganz schnell schief gehen.
while (!beenden){ // solange wie ...?
if (!eingabe.contains("keks")) {// ... ?
System.out.println(antwort(eingabe)); // ... ?
} else {
System.out.println("Auf wiedersehen."); // ..?
beenden=true; // ... ?
}
}
und überall wo jetzt …? steht, überleg dir was passiert
Edit: Ich weiss immer das gleiche aber du solltest dich ein wenig mit den Grundlagen beschäftigen, Objekte, Variablenzuweisungen, Schleifen, Bedingungen
Ich gebe Dir recht MiMi, ich muss die ganzen Dinge lernen. Daher mache ich das ja. Allerdings stehe ich noch ziemlich am Anfang :). Vieles habe ich mir zwar schon mal angelesen und verstehe es, aber es allein richtig anwenden ist dann eben doch noch ein anderes paar Schuhe…
Ich danke Euch allen für Eure tolle Hilfe. Vielleicht kann ich selbige noch ein wenig in Anspruch nehmen: Was ist an diesem Versuch noch verbesserungswürdig.
import java.io.IOException;
import java.util.Scanner;
/**
*
* @author kanexo
*/
public class Minion_Main {
public static void main(String[] args) throws IOException{
//Begruessung
System.out.println("Hallo.");
//Initialisierung
Scanner scanner = new Scanner(System.in);
//System.out.println(antwort(eingabe));
while (true){
String eingabe = scanner.next().toLowerCase();
if (eingabe.contains("keks")) break;
System.out.println(antwort(eingabe));
}
System.out.println("Bye...");
scanner.close();
}
private static String antwort(String eingabe){
String antwort = ("aha " + eingabe);
return antwort;
}
}
Das ganze ist ein sehr Prozeduraler Code. Ein Feature von Java ist, daß es eine Objektorientierte Sprache ist.
Das bietet einem dann im weiteren ganz viele Möglichkeiten.
OOP
Und warum ist z.B. print() nicht statisch? Ah, da koennte man ja gleich einen static import verwenden.
Manchmal muss mal halt erst programmieren lernen, bevor man nach vielen Jahren mit OOP die Früchte davon sieht.