WinFuture-Forum.de: Java - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Java frage zu System.in.read()


#1 Mitglied ist offline   Fabi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.958
  • Beigetreten: 30. August 04
  • Reputation: 1
  • Geschlecht:Männlich

geschrieben 02. April 2008 - 17:20

Hi, 

ich bin gerade dabei java zu lernen (selbststudium), und hab ne frage zu der funktion System.in.read().

Ich bin gerade dabei einen kleinen Taschenrechner zu schreiben (Als Übung), und jetzt würde ich gerne, das der Benutzer zwei Werte eingeben kann und diese addiert werden.

Sollte ungefähr so aussehen:
System.out.println("Addieren:");
 	 double zahl1;
 	 double zahl2;
 	 System.out.println("Wert1 : ");
 	 zahl1 = (double)System.in.read();
 	 System.out.println("Wert2 : ");
 	 zahl2 = (double)System.in.read();
 	 System.out.print("Ergebnis : ");
 	 System.out.println(Addieren(zahl1,zahl2)); // eigene Funktion, die hier nichts zur Sache tut


leider kann ich jetzt immer nur eine Zahl eingeben, und der Vorgang ist beendet!
Da ich ein wenig C++ kann, dachte ich das funktioniert wie dort, und ich kann eine Varible eingeben, dann Enter drücke und dann die nächste!

Jemand ne Ahnung wie ich das sonst anstellen könnte?

lg,
Fabi

Dieser Beitrag wurde von Fabi bearbeitet: 02. April 2008 - 17:20

0

Anzeige



#2 Mitglied ist offline   Christian59 

  • Gruppe: aktive Mitglieder
  • Beiträge: 101
  • Beigetreten: 06. Oktober 06
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 02. April 2008 - 18:00

Das geht so leider nicht, da die "read()"-Methode den ASCII-Wert eines eingegebenen Buchstaben zurückgibt.
Aber ich hab keine Methode finden können, die anders Funktioniert...
Also hab ich dir eine geschrieben:
	public static double getDouble()
	{
	try
	{
		String s = "";
		char c;
		while ((c = (char) System.in.read()) > 0)
		s += c;
		return Double.parseDouble(s);
	}
	catch (IOException ex)
	{
		ex.printStackTrace();
		return -1;
	}
	}

Einfach "zahl1 = getDouble();" aufrufen.

Dieser Beitrag wurde von Christian59 bearbeitet: 02. April 2008 - 18:01

Eingefügtes Bild
0

#3 Mitglied ist offline   I3lack0ut 

  • Gruppe: aktive Mitglieder
  • Beiträge: 2.047
  • Beigetreten: 14. Oktober 03
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Stuttgart

geschrieben 02. April 2008 - 18:07

Ihr solltet euch beide mal mit den Ein- und Ausgabeströmen von Java befassen ;)

Das hab ich mal als Übungsaufgabe geschrieben, vielleicht hilft es dir.
import java.io.*;
import java.util.*;

class OwnIO{
	String input;
	
	//Methode zum Einlesen eines Integer Wertes
	int getint() throws IOException{
		BufferedReader inoutstream;
		inoutstream = new BufferedReader(new InputStreamReader(System.in));
		input = inoutstream.readLine();
		//Umwandlung des Strings in einen Integer Wert und Rückgabe
		return Integer.parseInt(input);
	}
	
	//Methode zum Einlesen eines Double Wertes
	double getdouble() throws IOException{
		BufferedReader inoutstream;
		inoutstream = new BufferedReader(new InputStreamReader(System.in));
		input = inoutstream.readLine();
		//Umwandlung des String in einen Double Wert und Rückgabe
		return Double.parseDouble(input);
	}
	
	//Methode zum Einlesen meherer Integer Werte, welche dann als Array zurückgegeben werden
	int[] getmoreint() throws IOException{
		BufferedReader inoutstream;
		inoutstream = new BufferedReader(new InputStreamReader(System.in));
		input = inoutstream.readLine();
		//Zerlegung des Strings
		StringTokenizer st = new StringTokenizer(input, ",");
		//In dieses Array werden die Einzelnen Teilstrings geschrieben
		String[] result = new String[st.countTokens()];
		//In dieses Array werden die Einzlnen zu Integer gewandelten Werte geschrieben
		int[] rueckgabe = new int[st.countTokens()];
		
		//System.out.println("Out: " + st.countTokens());
		
		int i = 0;
		
		//Füllen der Arrays
		while (st.hasMoreTokens()){
			result[i] = st.nextToken();
			rueckgabe[i] = Integer.parseInt(result[i]);
			i++;
		}	
		
		return rueckgabe;
		
	}
	
	//Methode zum Einlesen meherer Double Werte, welche dann als Array zurückgegeben werden
	double[] getmoredouble() throws IOException{
		BufferedReader inoutstream;
		inoutstream = new BufferedReader(new InputStreamReader(System.in));
		input = inoutstream.readLine();
		//Zerlegung des Strings
		StringTokenizer st = new StringTokenizer(input, ",");
		//In dieses Array werden die Einzelnen Teilstrings geschrieben
		String[] result = new String[st.countTokens()];
		//In dieses Array werden die Einzlnen zu Double gewandelten Werte geschrieben
		double[] rueckgabe = new double[st.countTokens()];
		
		//System.out.println("Out: " + st.countTokens());
		
		int i = 0;
		
		//Füllen der Arrays
		while (st.hasMoreTokens()){
			result[i] = st.nextToken();
			rueckgabe[i] = Double.parseDouble(result[i]);
			i++;
		}	
		
		return rueckgabe;	
	}
}

Never run a changing system.
Micro Game Reviews (Mein Blog)
0

#4 Mitglied ist offline   Fabi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.958
  • Beigetreten: 30. August 04
  • Reputation: 1
  • Geschlecht:Männlich

geschrieben 02. April 2008 - 18:27

@all:erstmal vielen dank!

Zitat

Ihr solltet euch beide mal mit den Ein- und Ausgabeströmen von Java befassen

das kommt sicherlich noch!ich arbeite gerade ein Buch schritt für schritt ab, und soweit bin ich noch nicht ;)!

@I3lack0ut: wäre dies der offizielle weg? also müsste man das immer so machen?

lg,
Fabi

Dieser Beitrag wurde von Fabi bearbeitet: 02. April 2008 - 18:27

0

#5 Mitglied ist offline   LoD14 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.931
  • Beigetreten: 04. Mai 03
  • Reputation: 45
  • Wohnort:Hennef bei Köln

geschrieben 02. April 2008 - 18:44

@I3lack0ut: viel zu kompliziert für nen anfänger. ich verwende jetzt seit 3 semestern die gleiche input klasse, die lediglich string und ints lesen kann, das reicht vollkommen. den ganzen rest kannst du casten. also doublevariable = Double.parseDouble(eingelesener_string);

import java.io.*;

class TastaturIn {
	private InputStreamReader is=new InputStreamReader(System.in);
	private BufferedReader eingabe=new BufferedReader(is);
	
	public int readInt() throws IOException {
		String zeile;
		int wert=0;
		
		zeile=eingabe.readLine();
		wert=(new Integer(zeile)).intValue();
		
		return wert;
	}
	
	public String readString() throws IOException{
		String zeile="";
		
		zeile=eingabe.readLine();
		
		return zeile;
	}

}


äh, sorry, is net kommentiert, aber ich denke, weitestgehend selbsterklärend.

Dieser Beitrag wurde von LoD14 bearbeitet: 02. April 2008 - 18:48

0

#6 Mitglied ist offline   Fabi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.958
  • Beigetreten: 30. August 04
  • Reputation: 1
  • Geschlecht:Männlich

geschrieben 02. April 2008 - 18:50

@LoD14: ich hab den Vorschlag von I3lack0ut eiegntlich auf anhieb verstanden, kann aber auch daran liegen, das ich schon etwas Programmieren kann!Finde das der Code sehr gut Kommentiert ist und er somit leicht verstanden werden kann!



lg,
Fabi
0

#7 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.942
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 02. April 2008 - 19:34

Wie wäre es mit der neuen Console-Klasse, die mit Java 6 eingeführt wurde? http://java.sun.com/...io/Console.html
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0