# [Verständnisprobleme] Java next(),nextLine,nextInt und parseInt!



## gstarplayer (16. Sep 2014)

_*Hallo Leute,*_
ich bin gerade dabei eine Übung aus einem Buch zu erledigen. Jedoch hänge ich gerade dabei ein paar Begriffe zu verstehen :bahnhof:
Habe erst vor kurzem mit Java angefangen, bitte entschuldigt mich, wenn ich nicht alles direkt verstehe. Google und meine Bücher habe ich auch bereits nach eine Lösung durchsucht aber ohne Erfolg.

_Hier mein Java-Code aus dem Buch:_ [Java]
import java.util.Scanner;
public class Summe {

	public static void main(String[] args) {

		int zahl1,zahl2,ergebnis;
		Scanner input = new Scanner(System.in);
		System.out.print("Geben Sie die erste Zahl ein: ");
		// 1. Variante
		zahl1 = Integer.parseInt(input.nextLine());
		System.out.print("Geben sie die zweite Zahl ein: ");
		// 2. Variante
		zahl2 = input.nextInt();
		ergebnis = zahl1 + zahl2;
		System.out.println("Die Summe von "+zahl1+" und "+zahl2 + " ist: "+ergebnis);
		System.out.println("Programmende Summer.");
	}

}
[/Java]

*Es geht um die Zeile 11-14. Hauptsächlich um den Teil mit zahl1=Integer.parseInt(input.nextLine()); und  zahl2=input.nextInt();. Was passiert dort genau?*

Mir geht es hier nur darum den Code zu verstehen und nicht wie man es abkürzen oder optimieren kann 

Vielen Dank


----------



## Joose (16. Sep 2014)

Hierbei handelt es sich um Methoden der Klassen Scanner.
Java API - Dokumentation für java.util.Scanner

Dort findest du eine genaue Beschreibung was diese Methoden machen.


----------



## gstarplayer (16. Sep 2014)

Joose hat gesagt.:


> Hierbei handelt es sich um Methoden der Klassen Scanner.
> Java API - Dokumentation für java.util.Scanner
> 
> Dort findest du eine genaue Beschreibung was diese Methoden machen.



Danke für den Tipp ABER Diese Seite habe ich bereits gesehen, jedoch komme ich damit nicht viel weiter. ???:L
Es wäre toll, wenn es mir einer anhand es Codes erklären kann, was genau in meinem Fall passiert.
Mit der Seite ist auch nicht erklärt, was genau "Integer.parseInt" macht.

Vielen Dank im Voraus


----------



## gstarplayer (16. Sep 2014)

Kann mir niemand hier helfen? :O


----------



## JavaMeister (16. Sep 2014)

Was denkst du, was integer.parseInz macht, wenn es ein String bekommt und integer zurück gibt????

Kann man sich sowas echt nicht herleiten?

Oder vom Namen der Methode und dazugehöriger Beschreibung in der JavaDoc?


----------



## gstarplayer (16. Sep 2014)

Wenn ich es könnte, würde ich es nicht hier ins Forum fragen oder?


----------



## gstarplayer (16. Sep 2014)

Mich würde nur interessieren, was in folgenden Zeilen passiert bzw. wie das dort abläuft;

[Java]zahl1 = Integer.parseInt(input.nextLine());[/Java]
[Java]zahl2 = input.nextInt();[/Java]


----------



## JavaMeister (16. Sep 2014)

Was denkst du, was integer.parseInz macht, wenn es ein String bekommt und integer zurück gibt????

Kann man sich sowas echt nicht herleiten?

Oder vom Namen der Methode und dazugehöriger Beschreibung in der JavaDoc?


----------



## kaoZ (16. Sep 2014)

man sollte ggf. wenigstens die Deutsche Bedeutung ableiten können


```
to parse = analysieren / zerteilen / aufgliedern / parsen
```

hier wird also irgendwas analysiert, im Falle von 

```
Integer.parseInt(String s);
```

handelt es sich um einen Statische Methode der Klasse Integer ( Wrapper-Klasse (verpackt primitive Datentypen des Typs int in ein Objekt))

welche den ihr übergebenen String nach einer Ganzzahl "durchsucht" also ihn analysiert.

sollte dies der fall sein , liefert diese Methode die entsprechende Ganzzahl zurück, enthält der per Parameter übergeben String keien Ganzzahl, wird eine Exception geworfen, in diesem Fall eine NumberFormat oder ParseException.

_Alle klassen, welche primitive Datentypen in Objekte "wrappen" ( also umschließen ) bieten normalerweise statische Hilfsmethoden an welche den ihr übergebenen Parameter auf den jeweiligen wert analysieren, und den jeweiligen Wert zurückliefern._

Wenn du wissen willst wie das ganze Implementiert ist , musst du dir diese Implementation im Source Code der klasse Interger anschauen, so kannst du ggf. später nachvollziehen *wie* hier nach einer Ganzzahl gesucht wird.


----------



## gstarplayer (16. Sep 2014)

kaoZ hat gesagt.:


> man sollte ggf. wenigstens die Deutsche Bedeutung ableiten können
> 
> 
> ```
> ...



Das mit "Integer.parseInt" habe ich auch weitestgehend verstanden aber danke nochmal für die gute Erklärung.
Mein Hauptproblem ist, das ich nicht ganz verstehe was [Java]nextLine[/Java] und was [Java]nextInt[/Java] genau macht bzw. was der Unterschied ist? 

Vielen Dank


----------



## JavaMeister (16. Sep 2014)

Versuch doch mal selber so zu analysieren, wie der vorredner es gemacht hat. Wo liegt hier das Problem?

Und @kaoZ man sieht an diesem Beispiel ganz gut, was es bringt die Lösung auf dem silbernen Tablett zu liefern. Nämlich nix. Kannst hier gesamte Abhandlung schreiben und es wird nix bringen.

:bahnhof:


----------



## gstarplayer (16. Sep 2014)

JavaMeister hat gesagt.:


> Versuch doch mal selber so zu analysieren, wie der vorredner es gemacht hat. Wo liegt hier das Problem?
> 
> Und @kaoZ man sieht an diesem Beispiel ganz gut, was es bringt die Lösung auf dem silbernen Tablett zu liefern. Nämlich nix. Kannst hier gesamte Abhandlung schreiben und es wird nix bringen.
> 
> :bahnhof:



Also ich weiß echt nicht was dein Problem ist?
Das Forum ist doch für Fragen da und man sollte auch so fair sein und den Leuten helfen die erst in die Thematik von Java einsteigen!
Und es hat sowohl was gebracht, was @kaoZ geschrieben hat 
Wenn du keine Lust hast Leuten zu helfen die noch nicht so weit in Java sind, dann ignoriere doch einfach diesen Beitrag oder bleib ganz aus dem Forum draußen!!!
Habe nur nett um Hilfe gebeten aber da ist man ja wohl falsch in diesem Forum.


----------



## JavaMeister (16. Sep 2014)

Sorry, dass ich an deine Eigeninitiative appelliert habe ^^. 

War wohl ein Fehler von mir. Ja, du bist hier im falschen Forum, wenn du denkst, dass jede Frage für dich ausgearbeitet wird... 

Denn würde der vorherige Beitrag was gebracht haben, wie du behauptest, dann würdest du die nächste Frage nicht mehr stellen. "Transfer-Leistung".


----------



## gstarplayer (16. Sep 2014)

Ich wollte auch nicht mein ganzen Code ausgearbeitet bekommen, es ging lediglich um die paar Ausdrücke.
Tut mir leid das ich es nicht alles verstanden habe, wusste nicht das man hier ihm Forum ein Java Profi sein muss.


----------



## JavaMeister (16. Sep 2014)

Wenn du meinst, dass so eine Analyse den "Profi" Status benötigt, dann tut es mir sehr leid für dich. Das zeigt aber nur, dass die simplen Sachen dich überfordern. Woran das liegt ist klar. (Ich schreibe es dennoch: Mangelnde Eigeninitiative  - FAKT!). 

Fang doch einfach so an, wie oben vor gemacht: Übersetzen und die Bedeutung ins Deutsche übertragen. Zur not (=Dict.Leo)


----------



## gstarplayer (16. Sep 2014)

Langsam frage ich mich, was du in diesem Forum zu suchen hast. Du hilfst hier überhaupt nicht weiter ^^
Und an mangelnder Eigeninitiative liegt es bestimmt nicht 
Ich habe es bereits ins Deutsche übersetzt, jedoch weiß ich immer noch nicht was die beiden Ausdrücke genau machen bzw. Wo der Unterschied liegt.
Aber das Ganze hier mit die wird mir langsam zu kindisch und auf eine Antwort brauche ich auch nicht mehr zu hoffen.


----------



## JavaMeister (17. Sep 2014)

Wirklich Schade, dass du das so siehst.  Dann kann man wohl nix machen. 

Du hast leider ein ganz falsches Verständnis von so einem Forum. Und wenn du dir eben nicht helfen lassen möchtest und 0 mitarbeitest sondern auf eine plumpe Lösung hoffst, dann wirst du natürlich enttäuscht. Ich denke das ist dir mittlerweile klar. Du verstehst das Problem eben nicht. Es geht hier nicht um zwei Methoden und was sie machen. Du verstehst das Konzept dahinter nicht.  Und es bringt nix zu wissen, was zwei von Milliarden Methoden machen. Man muss eben das Konzept dahinter verstehen und das muss man sich in der lernphase eben erarbeiten. 

Bitte lese dir deine postings durch. Immer nur: Ehh hau ab. Sag mir die Lösung. Ich kann nicht ich will nicht.  Habe ich noch nie erlebt sowas. Und zumindest etwas Mitarbeit unter geführter Anleitung kann man hier erwarten als Informatiker. Und wenn dann nur persönliche Beleidigungen zurückkommen, dann denkt man sich sein übriges. 

Vielleicht versucht es noch jemand, der gerade viel Langeweile hat und die Java Doc für dich hier hinschreibt. Ich bin hier raus.


----------



## X5-599 (17. Sep 2014)

Also hier mal meine Annahmen. Mit Vorsicht zu genießen, da ich nicht hundertprozentig in der Materie drin bin.

Oberflächlich betrachtet machen Integer.parseInt(input.nextLine()); und input.nextInt(); erstmal dasselbe. Sie liefern beide ein "int", das über die Kommandozeile eingegeben wurde.
Genauer gesagt liefert input.nextLine() einen String, der von Integer.parseInt() in ein "int" umgewandelt wird. input.nextInt() macht diese Umwandlung intern; und noch etwas mehr:

Es wird per regulärem Ausdruck überprüft, ob es sich bei der Eingabe um etwas handelt, das in einem integer entspricht. Dabei wird anscheinend schon die aktuelle Locale mit einbezogen. Denn sollte diese Überprüfung erfolgreich sein, werden sowas wie Trennzeichen, Pre- Suffixes (gemäß der Locale) entfernt, nicht ASCII Zeichen in ASCII Zeichen gewandelt, sollte es erforderlich sein, ein (-)Zeichen hinzugefügt und zum Schluss wird das ganze an Integer.parseInt() übergeben um das "int" zu erzeugen.

Das wird erkennbar wenn man z.B. versucht die Zahl 1.000 (Eintausend) einzugeben. Integer.parseInt(input.nextLine) wird eine NumberFormatException werfen. input.nextInt() hingegen wird ein "int" mit dem Wert 1000 liefern.


----------



## Joose (17. Sep 2014)

gstarplayer hat gesagt.:


> Also ich weiß echt nicht was dein Problem ist?
> Das Forum ist doch für Fragen da und man sollte auch so fair sein und den Leuten helfen die erst in die Thematik von Java einsteigen!



Jap, aber trotzdem sollten diese Leute auch etwas Eigeninitiative zeigen.
Weil das zeigt auch dass man es wirklich lernen will etc, viele brauchen die Hilfe ja nur für Hausaufgaben etc.



gstarplayer hat gesagt.:


> Tut mir leid das ich es nicht alles verstanden habe, wusste nicht das man hier ihm Forum ein Java Profi sein muss.



Muss man nicht



gstarplayer hat gesagt.:


> Ich wollte auch nicht mein ganzen Code ausgearbeitet bekommen, es ging lediglich um die paar Ausdrücke.



Ich habe dir schon einen Link gegeben wo genau steht was diese beiden Methoden machen.

nextLine()
nextInt()

Ein Scanner ist nichts anderes als eine Klasse, welche dir ermöglicht Daten von einem Stream zu lesen.
So fertig. Mit diesem Satz und den 2 Links solltest du dein Problem lösen können!


----------



## gstarplayer (17. Sep 2014)

Joose hat gesagt.:


> Jap, aber trotzdem sollten diese Leute auch etwas Eigeninitiative zeigen.
> Weil das zeigt auch dass man es wirklich lernen will etc, viele brauchen die Hilfe ja nur für Hausaufgaben etc.
> 
> 
> ...



Okey, dann wurde das vielleicht falsch verstanden aber meine Frage hat nichts mit einer Hausaufgabe zu tun und ich habe mich ja bereits vorher umgeschaut nach einer Antwort.
Aber meiner Meinung nach kann man mir auch freundlicher antworten, als es JavaMeister gemacht hat.


----------



## JavaMeister (17. Sep 2014)

Ja. Es sind immer die anderen.


----------



## Joose (17. Sep 2014)

gstarplayer hat gesagt.:


> Okey, dann wurde das vielleicht falsch verstanden aber meine Frage hat nichts mit einer Hausaufgabe zu
> tun



Habe ich auch nicht behauptet 
Sondern nur erwähnt das viele Leute nur noch einer Lösung zu einer Hausaufgabe suchen.
Daher kommt auch die Ablehnung und oftmals Unfreundlichkeit gegenüber Postern, welche Hilfe für ein Problem suchen. Dieses Problem aber nur minimal beschreiben, keine Eigeninitiative zeigen und auch nur bedingt Ratschläge annehmen.



gstarplayer hat gesagt.:


> und ich habe mich ja bereits vorher umgeschaut nach einer Antwort.



Schön, aber du hast nicht erwähnt auf welchen Seiten du schon was zu diesem Thema gefunden hast.
Hättest du zum Beispiel einen Link gepostet und gesagt was du vermutest was diese Zeile bedeutet wäre das immerhin schon etwas Eigeninitiative.

Außerdem kann man einige Codestücke einfach mal selbst ausprobieren um zu sehen was diese "machen".


----------



## jgh (17. Sep 2014)

aha ok, gibt mehr als eine Seite


----------

