Read, Readline ?

Status
Nicht offen für weitere Antworten.

Pfaeff

Aktives Mitglied
hi,
ich versuche gerade mein erstes Programm in Java zu schreiben, bisher gefällt mir die Sprache ganz gut (ich kannte C# schon ein wenig, bin aber eigentlich mit Delphi unterwegs).
Nun möchte ich dass nacheinander zwei Zahlen eingelesen werden und von diesen soll dann der ggT berechnet werden.

nun habe ich das Problem, dass er nach der ersten Eingabe (einmal etwas eingeben und enter drücken) gleich das zweite Read ausführt. Außerdem ließt Read afaik nur ein Zeichen und setzt den Zeiger auf das nächste, sodass ich zwar mit
39 den ggT aus 3 und 9 berechnen kann, mehr aber nicht 😉
Also bräuchte ich eine andere Funktion, gibt es sowas wie readln, ich hab mal etwas von readline gelesen, es aber nicht einbauen können.
Des weiteren habe ich Probleme mit Typecasts, toString scheint nie so richtig zu funktionieren und meistens scheint man es auch nicht zu brauchen (ich bin typecasting von pascal gewohnt).

Von den Eingaben bekomme ich mit Read auch immer nur den Ascii code, sodass ich erst 48 subtrahieren muss, was ich nicht gerade elegant finde 😉

Hier ist mein Source:

Code:
public class HelloWorld {
	
    public static int ggT(int a, int b)
    {
      if ((a == 0) || (b == 0))
        return 0;
      int r;
      do
      {
        r = b;
        b = a % b;
        a = r;
      }
      while (b != 0);
      return a;
    }	
	
	public static void main(String[] args) {
          int res = 0, a = 0, b = 0;
          System.out.println("Berechnung des größten gemeinsamen Teilers:");
          System.out.println("Bitte geben Sie die erste Zahl ein!");
          try {
   /* Hier sowas wie readln */     	  
          a = System.in.read() - 48;          
          } catch (java.io.IOException e) {
            System.out.println("Fehlerhafte Eingabe!");
          }   
          System.out.println("Bitte geben Sie die zweite Zahl ein!");
          try {
          b = System.in.read() - 48;
          } catch (java.io.IOException e) {
            System.out.println("Fehlerhafte Eingabe!");
          }   
          res = ggT(a, b);
          System.out.println("Der ggT von " + a + " und " + b + " ist " + res);
	}

}

Vielen Dank schonmal,

mfg
 
Du kannst die Eingabe in einen BufferedReader kapseln:

Code:
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
			
			String s = "";
			try {
				s = in.readLine();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

Falls du Integerwerte eingibst, einfach mit

Code:
int zahl = Integer.parseInt(s)

umwandeln.
 
verwende einen BufferedReader um System.in() oder einen Scanner
oder lies überhaupt erstmal entsprechende Tutorials/ Beispiele 😉

> Des weiteren habe ich Probleme mit Typecasts, toString scheint
> nie so richtig zu funktionieren und meistens scheint man es
> auch nicht zu brauchen (ich bin typecasting von pascal gewohnt).

soso,
soll das eine Frage darstellen?
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben