Mehrere Konsoleneingaben

Blues

Mitglied
Hallo,

ich habe folgenden Code:
___________________________________________________________________________
Java:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class REAnwendung2a {
	public static void main (String[]Args)throws IOException{
		Rechteck2 Rechteck1 = new Rechteck2();
		Rechteck2 Rechteckneu = new Rechteck2();

		//Rechteck1.setQuadrat();
		//System.out.println("Der Radius betraegt: " + Rechteck1.istQuadrat());
		
        System.out.println("Bitte geben Sie einen X Wert ein: " );
        BufferedReader in = new BufferedReader( new InputStreamReader( System.in ) );
        String line = in.readLine();
        double valueX = Integer.valueOf( line ).intValue();
        
        System.out.println("Bitte geben Sie einen Y Wert ein: " );
        BufferedReader in2 = new BufferedReader( new InputStreamReader( System.in ) );
        String line2 = in2.readLine();
        double valueY = Integer.valueOf( line ).intValue();

		System.out.println("Bitte geben Sie die Breite ein: " );
        BufferedReader in3 = new BufferedReader( new InputStreamReader( System.in ) );
        String line3 = in3.readLine();
        double length = Integer.valueOf( line ).intValue();
        
		System.out.println("Bitte geben Sie die Hoehe ein: " );
        BufferedReader in4 = new BufferedReader( new InputStreamReader( System.in ) );
        String line4 = in4.readLine();
        double heigth = Integer.valueOf( line ).intValue();

        System.out.println("___________________________________________");
		Rechteck1.setXKoordinate(valueX);
		Rechteck1.setYKoordinate(valueY);
		System.out.println("Es wurde ein Rechteck erzeugt.");
		System.out.println("Das neue Rechteck hat die Koordinaten X: " + Rechteck1.getXKoordinate() + " Y: " + Rechteck1.getYKoordinate());

		Rechteck1.setRechteckbreite(length);
		System.out.println("Die Breite betraegt: " + Rechteck1.getRechteckbreite());
		Rechteck1.setRechtecklaenge(heigth);
		System.out.println("Die Hoehe betraegt: " + Rechteck1.getRechtecklaenge());
        System.out.println("___________________________________________");
        
		System.out.println("Die Flaeche betraegt: " + Rechteck1.getFlaeche());
		
		if (Rechteck1.istQuadrat() == true) {
			System.out.println("Rechteck1 ist ein Quadrat!");}
		else
			{System.out.println("Rechteck1 ist kein Quadrat!");}
			
        System.out.println("Bitte geben Sie einen X Wert für das neue Rechteck ein: " );
        BufferedReader in5 = new BufferedReader( new InputStreamReader( System.in ) );
        String line5 = in5.readLine();
        double valueXn = Integer.valueOf( line ).intValue();
        
        System.out.println("Bitte geben Sie einen Y Wert für das neue Rechteck ein: " );
        BufferedReader in6 = new BufferedReader( new InputStreamReader( System.in ) );
        String line6 = in6.readLine();
        double valueYn = Integer.valueOf( line ).intValue();
		
		System.out.println("Bitte geben Sie die Breite ein: " );
        BufferedReader in7 = new BufferedReader( new InputStreamReader( System.in ) );
        String line7 = in7.readLine();
        double lengthn = Integer.valueOf( line ).intValue();
        
		System.out.println("Bitte geben Sie die Hoehe ein: " );
        BufferedReader in8 = new BufferedReader( new InputStreamReader( System.in ) );
        String line8 = in8.readLine();
        double heigthn = Integer.valueOf( line ).intValue();

        System.out.println("___________________________________________");
		Rechteckneu.setXKoordinate(valueXn);
		Rechteckneu.setYKoordinate(valueYn);
		System.out.println("Es wurde ein weiteres Rechteck angelegt.");
		System.out.println("Das neue Rechteck hat die Koordinaten X: " + Rechteckneu.getXKoordinate() + " Y: " + Rechteckneu.getYKoordinate());
 
				
		Rechteckneu.setRechteckbreite(lengthn);
		Rechteckneu.setRechtecklaenge(heigthn);
		System.out.println("Das neue Rechteck hat die Dimensionen: " + Rechteckneu.getRechteckbreite() + " (Breite) " + Rechteckneu.getRechtecklaenge() + " (Laenge)");
        System.out.println("___________________________________________");
       	
		if ((Rechteck1.getXKoordinate() < Rechteckneu.getXKoordinate()) && (Rechteck1.getYKoordinate() < Rechteckneu.getYKoordinate()) && (Rechteck1.getXKoordinate()+Rechteck1.getRechteckbreite()-(Rechteckneu.getXKoordinate()+Rechteckneu.getRechteckbreite()) > 0) && (Rechteck1.getYKoordinate()+Rechteck1.getRechtecklaenge()-(Rechteckneu.getYKoordinate()+Rechteckneu.getRechtecklaenge()) > 0)) {
																																					//(12+10-(13+
			System.out.println("Das neue Rechteck liegt im alten Rechteck!");
			}
		else
			{
			System.out.println("Das neue Rechteck liegt nicht im alten Rechteck!");
			}
		System.out.println(Rechteck1.getXKoordinate() - Rechteckneu.getXKoordinate());
		System.out.println(Rechteck1.getYKoordinate() - Rechteckneu.getYKoordinate());
		System.out.println(Rechteck1.getXKoordinate()+Rechteck1.getRechteckbreite()-(Rechteckneu.getXKoordinate()+Rechteckneu.getRechteckbreite()));
		System.out.println(Rechteck1.getYKoordinate()+Rechteck1.getRechtecklaenge()-(Rechteckneu.getYKoordinate()+Rechteckneu.getRechtecklaenge()));
		
		}
}
___________________________________________________________________________

Ich will verschiedene Werte eingeben, dann in der Klasse Rechteck mittels Gettern und Settern verarbeitet werden. Mein Problem hier ist, dass ALLE Werte den Wert der ersten eingegebenen Zahl annehmen. Das Einlesen der Eingaben habe ich hier zum ersten Mal versucht. Gibt es vielleicht auch Verbesserungspotential?
 
Java:
        String line = in.readLine();
        double valueX = Integer.valueOf( line ).intValue();

        String line2 = in.readLine();
        double valueY = Integer.valueOf( line ).intValue();

        String line3 = in.readLine();
        double length = Integer.valueOf( line ).intValue();
 
        String line4 = in.readLine();
        double heigth = Integer.valueOf( line ).intValue();
___________________________________________________________________________
Mein Problem hier ist, dass ALLE Werte den Wert der ersten eingegebenen Zahl annehmen.

Wahrscheinlich liegt es daran, dass du immer line in deine double Variablen schreibst. ;-)

ansonsten so

Java:
		Scanner scanner = new Scanner(System.in);
		
		System.out.print("Bitte geben Sie einen X Wert ein: " );
		double valueX = scanner.nextDouble();
       
		System.out.print("Bitte geben Sie einen Y Wert ein: " );
		double valueY = scanner.nextDouble();
		
		//oder so 
		
	    BufferedReader in = new BufferedReader( new InputStreamReader( System.in ) );
       
	    System.out.print("Bitte geben Sie einen X Wert ein: " );
        String line = in.readLine();
        double valueX = Integer.valueOf( line ).intValue();
        
        System.out.print("Bitte geben Sie einen Y Wert ein: " );
        String line2 = in.readLine();
        double valueY = Integer.valueOf( line2 ).intValue();
 
Zuletzt bearbeitet:
du liest verschiedene Strings line, line2, line3 usw. ein, die parse-Zeile danach verwendet aber immer line, nicht line2, line3 usw.,
das ist Copy&Paste mit allen möglichen Fehlern,
eine ganz wichige Grundregel ist, dass man einigermaßen komplizierten Code wie bei dir die 3 Zeilen zum Einlesen einer Zahl niemals mehr als 1-2x wiederholt hinschreiben sollte,
schon beim zweiten Mal lohnt sich fast immer eine Untermethode,
zum Glück hattest du bisher schon throws IOException, jedes Mal ein try/catch, dann wäre das noch viel länger..

in diesem Fall kommt noch hinzu, dass man es streng vermeiden sollte, auf System.in viele höhere Streams/ Reader lesen zu lassen, einer hätte es auch getan

etwas kürzerer Code der ersten Hälfte:
Java:
public class Test
{
    static BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

    public static void main(String[] args)   throws Exception  {
        // Rechteck1.setQuadrat();
        // p("Der Radius betraegt: " + Rechteck1.istQuadrat());

        p("Bitte geben Sie einen X Wert ein: ");
        double valueX = readDouble();

        p("Bitte geben Sie einen Y Wert ein: ");
        double valueY = readDouble();

        p("Bitte geben Sie die Breite ein: ");
        double length = readDouble();

        p("Bitte geben Sie die Hoehe ein: ");
        double heigth = readDouble();

        p("___________________________________________");
        p("Es wurde ein Rechteck erzeugt.");
        p("Das neue Rechteck hat die Koordinaten X: " + valueX + " Y: " + valueY);

        p("Die Breite betraegt: " + length);
        p("Die Hoehe betraegt: " + heigth);
        p("___________________________________________");

        p("Die Flaeche betraegt: ?");
    }

    private static double readDouble()  throws Exception  {
        return Integer.parseInt(in.readLine());
    }
    private static void p(String st)  {
        System.out.println(st);
    }
}
die p()-Methode ist reiner Komfort, muss nicht sein

mit der readDouble() kann man jetzt auch überlegen, dort ein try/catch einzubauen und auf das throws zu verzichten,
auch eine Erweiterung 'falsche Eingabe, bitte nochmal' bei Eingabe von Text statt Zahl wäre nun machbar
 
Zuletzt bearbeitet von einem Moderator:

Neue Themen


Zurück
Oben