# Tastatureingabe abfangen



## walterschmitz (12. Aug 2011)

Hallo,

als Java Neuling versuche ich gerade ein Tutorial nachzuprogrammieren, dazu wird einfach ein Zufallszahl erzeugt, wobei der User eine Zahl eingeben muss, die zur Zufallszahlberechnung herangezogen wird.

Das Problem ist diese Eingabe des Users.

Ich denke, dazu muss ich die java.io.* importieren.

Vermutlich muss ich einen BufferedInputStream machen, der mir die Dateneingabe der Tastatur abfängt.
Diese kann ich dann einzeln weiterverarbeiten, oder?

Könnte mir jmd kurz auf die Sprünge helfen?

Danke sehr für die Unterstützung.

Gruß


----------



## Leno (12. Aug 2011)

Hi bin zwar auch kein Profi aber versuche mal folgendes :


```
Scanner sc = new Scanner(System.in);

int zahl; 

System.out.println("Bitte Zahl eingeben :");

sc.nextInt();

[/Java]
```


----------



## Leno (12. Aug 2011)

Sorry letzte Zeile war falsch zu schnell getippt : )


```
zahl = sc.nextInt();
```

also komplett 


```
Scanner sc = new Scanner(System.in);
 
int zahl; 
 
System.out.println("Bitte Zahl eingeben :");
 
zahl = sc.nextInt();
```


----------



## Extremefall (12. Aug 2011)

Schau doch mal nach einem KeyListener. Damit kannst du benutzereingaben abfangen. Du musst nur aufpassen, dass die GUI auch den Fokus hat. 

Mfg


----------



## walterschmitz (12. Aug 2011)

Ne, es geht noch gar nicht um ne GUI... soweit bin ich ja gar nicht 

Ich will erstmal einfach ne Klasse machen, die mir ne Zufallszahl errechnet... 


```
import java.util.*;
import java.io.*;
class Zufallszahl {
  public Zufallszahl(
    Random rand = new Random();
    int i;
    int Benutzereingabe;
    // Hier soll die Benutzereingabe abgefangen und in Benutzereingabe gespeichert werden
    i = rand.nextInt(Benutzereingabe);
    System.out.println("Die Eingabe war:");
    System.out.println(Benuztereingabe);
    System.out.print("Die errechnete Zahl ist: ");
    System.out.println(i);
}
```

diese Benutzereingabe (ganz ohne Windows und GUI) möchte ich noch verstehen und machen.

Die Sache mit dem Scanner erscheint mir nur bedingt logisch... ist es nicht so, dass Scanner mit nextInt gar nichts zu tun hat... Scanner ist doch in diesem Beispiel auch für die Tastatureingabe zuständig, oder?


----------



## vanny (12. Aug 2011)

Scanner ist die Tastatureingabe ^^

und mit nextInt() bekommste den IntWert der Eingabe.


----------



## Fu3L (12. Aug 2011)

JO^^ Dashier an die richtige Stelle einzufügen ist die Aufgabe, die du noch hast 


```
Scanner sc = new Scanner(System.in); 
benutzereingabe = sc.nextInt();
```

Beachte bitte: Variablen schreibt man klein 
Und ka, ob dus hier im Forumsfenster geschrieben hast, aber der Konstruktorkopf braucht noch Änderung^^


----------



## walterschmitz (13. Aug 2011)

vanny hat gesagt.:


> Scanner ist die Tastatureingabe ^^
> 
> und mit nextInt() bekommste den IntWert der Eingabe.



Ach so... also spar ich mir das casten...

Ich dachte, ich bekomme damit einen Char und müsste ihn dann nach int casten... aber wenn das so ist, ok.

Aber nextInt()... hört sich ja nun mal auch komisch an. Muss ich mal genau nachschauen.
Bei der Sache nochmal: wie bekomme ich eigentlich raus, welche Methoden es in einer Classe wie java.io.* gibt?
Und vor allem, was die können.

ansonsten danke euch für die Aufklärung


----------



## Teslacoil (13. Aug 2011)

Hi,

check mal diesn link

java.io (Java 2 Platform SE 5.0)

dort findest du die Klassen und so weiter...

Gute Nacht
Oli


----------



## Anykey (13. Aug 2011)

in der Java API findest du alle Packete und Klassen und ihren Methoden.

Java Platform SE 6


----------



## Fu3L (13. Aug 2011)

> Aber nextInt()... hört sich ja nun mal auch komisch an. Muss ich mal genau nachschauen.



Einfach mal ausprobieren  
Natürlich sollte man schon verstehen was man macht, aber das kann man, wenn man überzeugt ist, dass es tatsächlich zu funktionieren scheint


----------



## walterschmitz (13. Aug 2011)

Ok, ich danke euch für die freundliche Hilfe...

Werde mal das Tutorial weitermachen und hoffen, dass ich nicht an solch einfachen Dingen öfter hängen bleib 

Für die Hifle...:toll::toll:


----------



## walterschmitz (13. Aug 2011)

so... jetzt habe ich es so gemacht 


```
import java.util.*;
import java.io.*;


public class Zufallszahl {
	public Zufallszahl() {
		Random Zufall = new Random();
		
		int Tasteneingabe = 0;
		Scanner scanner = new Scanner(System.in);
		Tasteneingabe = scanner.nextInt();
		
		int zufallszahl_generiert = Zufall.nextInt(Tasteneingabe);
		return;
	}
}
```

irgendwie stimmt es doch nicht.

Eclipse beschwert sich über das Object scanner... und über das return usw. 

Also... ich wollte jetzt da den Konstruktur machen, der direkt die Zufallszahl erzeugt.
Hab ich da nen Denkfehler beim Ansatz der Programmierung...

irgendwo hapert es noch.

Danke euch nochmal für Hilfe...


----------



## Fu3L (13. Aug 2011)

"Eclipse beschwert sich" ist keine gute Art, die Fehlermeldung mitzuteilen 

Das Problem mit Scanner löst sich, wenn du das Caret (den blinkenden Strich) hinter das Wort Scanner packst, einmal die leertaste drückst und dort java.util.Scanner auswählst. Die Klasse liegt nämlich im Paket java.util.*;
Edit: Wenns eindeutig ist, brauchst du nicht einmal mehr von Hand etwas auswählen. 
Edit2: Ohh, java.util.* is schon importiert.. dann brauchts wirklich die Fehlermedlung ^^ 

Konstruktoren verwendet man ohne das return Statement (es wir am Ende ja eh immer nur das gerade erzeugte Object zurückgegeben)


----------



## Paddelpirat (13. Aug 2011)

Ist aber eigentlich so richtig. Wobei du dir das 
	
	
	
	





```
import java.io.*;
```
 sowie das 
	
	
	
	





```
return;
```
 sparen kannst. Außerdem bräuchtest du wohl noch eine main Methode aus der du den Konstruktor aufrufst und die Ausgabe deiner zufallsgenerierten Zahl.

Edit: Siehe Vorredner


----------



## walterschmitz (13. Aug 2011)

du hast natürlich recht... 

es funktioniert auch... nur ich habe nicht bedacht, dass ich ja jetzt auch die Dateneingabe machen muss...
Ich hab nur ne Schwarze Konsole gehabt, ohne Meldungen (sowas wie... sie müssen jetzt was eingeben oder so) und daher einen Fehler vermutet...

Tut mir leid.

Es funktioniert richtig.

und der Rest, den du beschreibst... ist natürlich auch richtig...
sorry


----------

