Einlesen einer Matrix von der Console

O

Oceanxyz

Gast
Hallo

Ich habe folgendes Problem. Ich soll eine Methode einlesen schreiben, die eine Matrix beliebiger Länge von der Console einliest und die Matrix als Rückgabeparameter ausgibt. Zunächst soll die Dimension der Matrix über die Console eingegeben und danach soll die Matrix mit eingelesenere Dimension ausgegeben werden und anschliessend die Elemente einzeln über die Console eingegeben werden.

habe dazu folgenden Programmcode geschrieben, aber es Funktioniert nicht. Könnt ihr mir bitte zeigen wo meine Fehler sind und ob mein Ansatz richtig ist?

Bin für jede Hilfe sehr dankbar


Code:
import inout.*;

public class matrix
{
      
    public static int [][] einlesen()
    {
        int [][] k;
       
        System.out.println("Geben Sie die Zeile ein");
        int x = Console.readInt();
        System.out.println("Geben Sie die Spalte ein");
        int y = Console.readInt();
 
        k = new int[x][y];
        
        for(int i=0; i<k.length; i++)
        {
            for(int j=0; j<k[i].length; j++)
            {

                System.out.println(x+":"+y+" - "+k[i][j]);
                
            }

        }


               
    }
    return einlesen;

}
 
O

Oceanxyz

Gast
Ich kann das Programm nicht zum Laufen bringen. BlueJ gibt eine Fehlermeldung nach der anderen
 
O

Oceanxyz

Gast
@Crian ja das habe ich versucht leider ohne Erfolg.

@tfa nein sind nicht geheim :) Letzte Fehlermeldung ist cannot find symbol-variable einlesen und markiert mein return Zeile
 

haui95

Bekanntes Mitglied
Java:
    public static int [][] einlesen()   // Hier void !
    {
        int [][] k;
       
        System.out.println("Geben Sie die Zeile ein");
        int x = Console.readInt();
        System.out.println("Geben Sie die Spalte ein");
        int y = Console.readInt();
 
        k = new int[x][y];
        
        for(int i=0; i<k.length; i++)
        {
            for(int j=0; j<k[i].length; j++)
            {

                System.out.println(x+":"+y+" - "+k[i][j]);
                
            }

        }


               
    }
    return einlesen;    // Wo hast du denn "einlesen" deklariert ?  Ja, deine Methode heißt einlesen, hat aber mit return nichts zu tun. Eigentlich kannst du das weglassen, und deine Methode mit dem Modifier void deklarieren.

}


Java:
public class matrix
{
      
    public static void einlesen()
    {
        int [][] k;
       
        System.out.println("Geben Sie die Zeile ein");
        int x = Console.readInt();
        System.out.println("Geben Sie die Spalte ein");
        int y = Console.readInt();
 
        k = new int[x][y];
        
        for(int i=0; i<k.length; i++)
        {
            for(int j=0; j<k[i].length; j++)
            {

                System.out.println(x+":"+y+" - "+k[i][j]);
                
            }

        }


               
    }

}
 
O

Oceanxyz

Gast
habe den Fehler behoben es funktioniert. ich habe bei return einlesen() die Klammern nicht gesetzt

jetzt läuft das Programm und zeigt die Dimension.
ich möchte aber auch die Werte eingeben, wie kann ich das Programmcode erwewitern oder welchen Ansatz?
 
O

Oceanxyz

Gast
Ich bin keine Programmierin nur eine Elektrotechnikerin, die etwas Java Kenntnisse (Anfänger) braucht :)
also meine Idee dabei war dass das Programm die Methode ausführt und ausgibt, war wohl falsch habe es geändert und es funktioniert kann die Dimensionen eingeben.


@Haui95 danke für die Verbesserung. Habe es getestet, Dimension kann ich eingeben.

wie kann ich das Programm so erweitern, dass ich auch Werte für die einzelnen Feldereingeben kann?
 
M

modularity

Gast
wie kann ich das Programm so erweitern, dass ich auch Werte für die einzelnen Feldereingeben kann?

Gar nicht, weil Java grundsätzlich solche lustigen Sachen mit einem Terminal NICHT ohne native Libs unterstützt. Du könntest höchstens nach Eingabe der Dimensionen die Werte abfragen. Wenn du also z.B. 3x3 hast dann gibst du 3 Zahlen getrennt mit Komma oder Leerzeichen ein ... drückst dann Enter ... splittest intern den String in die Werte und machst das ganze noch zwei mal. Dann hast du deine 9 Werte auch im RAM. Aber so einfach mit den Pfeiltasten den Cursor bewegen und ne Zahl reinschreiben funktioniert so in Java NICHT. Da würde sich ne GUI deutlich besser eignen.
 

ARadauer

Top Contributor
ja...

System.out.println("Geben Sie den wert für "+x+" "+y+" ein);
int wert = Console.readInt();
k[j] = wert;
System.out.println(x+":"+y+" - "+k[j]);

oben dann statt void int[][] und unten vor du die schleife schließt return k;
ich würd mir mal ein paar grundlagen anschaun..
 
H

hüteüberhüte

Gast
Java:
    public static int[][] einlesen() {
        Scanner s = new Scanner(System.in);

        System.out.println("Geben Sie die Zeile ein");
        int x = s.nextInt();
        System.out.println("Geben Sie die Spalte ein");
        int y = s.nextInt();

        int[][] result = new int[x][y];

        for (int i = 0; i < result.length; i++) {
            System.out.printf("Geben Sie Zeile %d ein%n", i + 1);
            String[] strArr = s.nextLine().split("\\D+");
            for (int j = 0; j < result[i].length && j < strArr.length; j++) {
                if (!strArr[j].isEmpty()) {
                    result[i][j] = Integer.parseInt(strArr[j]);
                }
            }
        }

        for (int[] intArr : result) {
            System.out.println(Arrays.toString(intArr));
        }

        return result;
    }

Das funktioniert zwar, geht möglicherweise aber auch noch einfacher. Hierbei ist es jetzt so, dass der Scanner komischerweise die Ausgabe wieder als Eingabe nimmt ???:L

Code:
Geben Sie die Zeile ein
2
Geben Sie die Spalte ein
5
Geben Sie Zeile 1 ein
Geben Sie Zeile 2 ein
6 7 8 9
[0, 0, 0, 0, 0]
[6, 7, 8, 9, 0]

Deshalb nehme ich lieber BufferedReader:

Java:
    public static int[][] einlesen() throws IOException, NumberFormatException {
        BufferedReader r = new BufferedReader(new InputStreamReader(System.in));

        System.out.println("Geben Sie die Zeile ein");
        int x = Integer.parseInt(r.readLine());
        System.out.println("Geben Sie die Spalte ein");
        int y = Integer.parseInt(r.readLine());

        int[][] result = new int[x][y];

        for (int i = 0; i < result.length; i++) {
            System.out.printf("Geben Sie Zeile %d ein%n", i + 1);
            String[] strArr = r.readLine().split("\\D+");
            for (int j = 0; j < result[i].length && j < strArr.length; j++) {
                if (!strArr[j].isEmpty()) {
                    result[i][j] = Integer.parseInt(strArr[j]);
                }
            }
        }

        for (int[] intArr : result) {
            System.out.println(Arrays.toString(intArr));
        }

        return result;
    }

Code:
Geben Sie die Zeile ein
2
Geben Sie die Spalte ein
5
Geben Sie Zeile 1 ein
1 2 3 4 5
Geben Sie Zeile 2 ein
6 7 8 9
[1, 2, 3, 4, 5]
[6, 7, 8, 9, 0]
 
Zuletzt bearbeitet von einem Moderator:
H

hüteüberhüte

Gast
Mir ist noch etwas aufgefallen: Wenn
Code:
strArr[j]
leer ist, bleibt der Eintrag stattdessen 0. Das ließe sich auch umgehen (ist aber vielleicht auch viel zu aufwändig, blicke nämlich mittlerweile selbst nicht mehr durch):

Java:
        BufferedReader r = new BufferedReader(new InputStreamReader(System.in));

        System.out.println("Geben Sie die Zeile ein");
        int x = Integer.parseInt(r.readLine());
        System.out.println("Geben Sie die Spalte ein");
        int y = Integer.parseInt(r.readLine());

        int[][] result = new int[x][y];

        for (int i = 0; i < result.length; i++) {
            System.out.printf("Geben Sie Zeile %d ein%n", i + 1);
            String[] strArr = r.readLine().split("\\D+");
            int j = 0, k = 0;
            while (j < result[i].length && k < strArr.length) {
                if (!strArr[k].isEmpty()) {
                    result[i][j] = Integer.parseInt(strArr[k]);
                    j++;
                }
                k++;
            }
        }

        for (int[] intArr : result) {
            System.out.println(Arrays.toString(intArr));
        }

        return result;
 
Zuletzt bearbeitet von einem Moderator:
O

Oceanxyz

Gast
vielen dank für eure Antworten.

@hüteüberhüte Danke für die Programmcodes aber verstehe sie nur Teilweise und leider kann ich die Codes auch bei BlueJ nicht starten. (Fehlermeldung wie z B cannot find Symbol class Scanner)

@ARadauer danke für die Hilfe. ich habe den Code so erweitert und Es funktioniert aber kann am Ende keine Matrix ausgeben, Grundlagen schaue ich mir an aber ich kann sie nicht richtig anwenden. brauche Anwendungsbeispiele.

Code:
import inout.*;

class testmatrix

{

public static int [][] einlesen()
{
int [][] k;

System.out.println("Geben Sie die Zeile ein");
int x = Console.readInt();
System.out.println("Geben Sie die Spalte ein");
int y = Console.readInt();

k = new int[x][y];

for(int i=0; i<k.length; i++)
{
for(int j=0; j<k[i].length; j++)
{

System.out.println("Geben Sie den wert für "+x+" "+y+" ein");
int wert = Console.readInt();
k[i][j] = wert;
System.out.println(x+":"+y+" - "+k[i][j]);

}

}
return k;
}
}

Ausgabe sieht so aus
Code:
Geben Sie die Zeile ein
2
Geben Sie die Spalte ein
2
Geben Sie den wert für 2 2 ein
1
2:2 - 1
Geben Sie den wert für 2 2 ein
2
2:2 - 2
Geben Sie den wert für 2 2 ein
3
2:2 - 3
Geben Sie den wert für 2 2 ein
4
2:2 - 4


public static int [][] einlesen() der Kopf war vorgegeben, also sollte nicht abweichen.
 
H

hüteüberhüte

Gast
@hüteüberhüte Danke für die Programmcodes aber verstehe sie nur Teilweise und leider kann ich die Codes auch bei BlueJ nicht starten. (Fehlermeldung wie z B cannot find Symbol class Scanner)

Java:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import java.util.Arrays;
import java.util.Scanner;

Oder einfacher:

Java:
import java.io.*;

import java.util.*;

Zeig doch mal den vorgegebenen Code. Dann können wir damit eine entsprechende Lösung konstruieren

PS: Über ein Danke ("Danke"-Button) würde ich mich auch freuen. Sammle inzwischen :D
 
Zuletzt bearbeitet von einem Moderator:

Oceanxyz

Neues Mitglied
@hüteüberhüte
nochmal vielen dank für deine Hilfe und hast für jeden Code eine Danke von mir bekommen :D

Es ist kein Programmcode angegeben nur eine Aufgabe und als Hilfe soll der Kopf der Methode so aussehen
Code:
public static int [][] einlesen()

Es ist eine Aufgabe die ich eigentlich lösen wollte damit ich besser verstehen kann, Ich lerne nun mal an Anwendungsbeispielen besser :) also ich muss nichts abgeben. Es ist nur für mich. Leider ist mir dein Stil zu programmieren unbekannt. Ich habe nur ein Semester Java1. Deine Schreibweise verstehe ich nur Teilweise (etwas zu hoch für mich)

Ich soll ein Code schreiben der zu erest die Dimension einliest dann sollen die Werte über die Console eingegeben werden und anschließend als Matrix ausgegeben werden. Mein code funktioniert kann Dimension und Werte eingeben aber wird keine Matrix ausgegeben sondern nur
Code:
Geben Sie die Zeile ein
2
Geben Sie die Spalte ein
2
Geben Sie den wert für 2 2 ein
1
2:2 - 1
Geben Sie den wert für 2 2 ein
2
2:2 - 2
Geben Sie den wert für 2 2 ein
3
2:2 - 3
Geben Sie den wert für 2 2 ein
4
2:2 - 4

Ich denke mal fehlt ein zwischenschritt aber ich komme mit meinen Kenntnissen nicht drauf :)
 
H

hüteüberhüte

Gast
Die Frage ist, was in inout.* steht. Ohne deinen jetzigen Code gesehen zu haben, kann man nur raten, wie es zu dieser Ausgabe kommt

Edit: Welche Zeilen sind denn nichtr verständlich?
 
Zuletzt bearbeitet von einem Moderator:
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Methoden Einlesen einer unbegrenzten Matrix über Konsole Java Basics - Anfänger-Themen 6
Saiko Zeilen einer Datei einlesen Java Basics - Anfänger-Themen 3
O zufälliges Wort aus einer Datei einlesen Java Basics - Anfänger-Themen 32
I Nur auf Abfrage von einer Text Datei einlesen Java Basics - Anfänger-Themen 11
E Einteilung der Räume mit einlesen einer .txt datei Java Basics - Anfänger-Themen 16
A Datentypen Unterschiedliche Datentypen in einer Eingabe einlesen Java Basics - Anfänger-Themen 2
MaximilianTM Input/Output Einlesen und bearbeiten einer text Datei / Zeile Java Basics - Anfänger-Themen 5
M Einlesen von Integerwertern aus einer CSV Java Basics - Anfänger-Themen 8
P Methoden ausgelesene (CSV-) Daten in Liste einer anderen Klasse einlesen Java Basics - Anfänger-Themen 0
N gerichteter Graph aus einer Datei einlesen Java Basics - Anfänger-Themen 21
J Encoding Problem beim Einlesen einer txt Datei mit Umlauten Java Basics - Anfänger-Themen 3
D Einlesen funktioniert an einer Stelle nicht und ich kann mir nicht erklären warum Java Basics - Anfänger-Themen 6
S Programm zum Einlesen einer Zahl und Ausgabe der Wurzel Java Basics - Anfänger-Themen 13
B Probleme beim einlesen einer short variablen für einen Array Java Basics - Anfänger-Themen 1
K Einlesen einer txt von BufferedReader klappt nicht wie gewünscht Java Basics - Anfänger-Themen 12
S Input/Output einlesen aus einer evtl. leeren Datei Java Basics - Anfänger-Themen 5
A CSV Zeilenweise einlesen und in einer HashMap speichern Java Basics - Anfänger-Themen 12
J Variablen Problem beim einlesen einer Zahl Java Basics - Anfänger-Themen 7
T csv einlesen, nutzen einer direkten speicherort eingabe Java Basics - Anfänger-Themen 2
C Spalte einer Textdatei einlesen Java Basics - Anfänger-Themen 10
M Methoden Daten aus einer SQL-Abfrage in eine mehrdimensionales Array einlesen Java Basics - Anfänger-Themen 7
L Problem beim Einlesen einer Datei in einen String Java Basics - Anfänger-Themen 12
O Einlesen einer "config.ini" funktioniert plötzlich nicht mehr ! Java Basics - Anfänger-Themen 10
J byteweise Einlesen einer Datei "Von.. bis.." Java Basics - Anfänger-Themen 3
J Einlesen/Speichern von Strings aus einer Datei Java Basics - Anfänger-Themen 15
H Einlesen einer CSV-Datei Java Basics - Anfänger-Themen 2
S Einlesen einer Datei? Java Basics - Anfänger-Themen 9
H Datei einlesen in einer MVC Anwendung Java Basics - Anfänger-Themen 3
E Einlesen einer int und speichern in einem Array Java Basics - Anfänger-Themen 7
B einlesen einer variable im laufenden programm Java Basics - Anfänger-Themen 5
R JSP: Ausgabe einer entfernten Webseite in Variable einlesen Java Basics - Anfänger-Themen 2
H Problem beim Einlesen einer Datei (Endlosschleife ?) Java Basics - Anfänger-Themen 3
T Problem beim Einlesen einer Datei Java Basics - Anfänger-Themen 3
B Problem beim einlesen einer Textdatei Java Basics - Anfänger-Themen 3
V Quelltext einer Homepage einlesen Java Basics - Anfänger-Themen 12
F Einlesen einer URL per Konsole Java Basics - Anfänger-Themen 15
S Einlesen des Datums in einer Zeile. Java Basics - Anfänger-Themen 16
S Einlesen einer Datei und ins Array speichern Java Basics - Anfänger-Themen 11
G Inhalt einer Textdatei in ein Array einlesen Java Basics - Anfänger-Themen 2
M Einlesen einer CSV-Datei Java Basics - Anfänger-Themen 3
D Probleme mit dem Einlesen einer Datei Java Basics - Anfänger-Themen 11
T Daten aus einer .csv Datei in einen Vector einlesen Java Basics - Anfänger-Themen 3
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
G JTree speichern und wieder einlesen Java Basics - Anfänger-Themen 5
T Text einlesen code was kommt dahin? Java Basics - Anfänger-Themen 1
S SeriellenPort einlesen Java Basics - Anfänger-Themen 3
I XML einlesen und Objekte bekommen Java Basics - Anfänger-Themen 2
M Daten aus .txt Datei einlesen und weiterverarbeiten Java Basics - Anfänger-Themen 80
julian0507 Wörter einlesen lassen und rückwärts ausgeben Java Basics - Anfänger-Themen 7
S JSON einlesen und benutzen Java Basics - Anfänger-Themen 5
A CSv.Datei einlesen und die werte in zweidemosional Int Array speichern Java Basics - Anfänger-Themen 9
I Ical4j / Kalender einlesen von URL - Fehler: "Unparseable date" Java Basics - Anfänger-Themen 16
sserio Txt Datei einlesen Java Basics - Anfänger-Themen 9
D Strings aus Excel-Datei einlesen Java Basics - Anfänger-Themen 2
julian112 Input/Output .gz bzw. .txt Datei Einlesen und Umgang mit Exceptions Java Basics - Anfänger-Themen 1
M String beim einlesen formatieren Java Basics - Anfänger-Themen 12
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
G JSP Textfeld einlesen Java Basics - Anfänger-Themen 2
M Einlesen > new Leser Java Basics - Anfänger-Themen 5
W Werte durch Konsole einlesen Java Basics - Anfänger-Themen 10
A Array einlesen und ausgeben Java Basics - Anfänger-Themen 13
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
KogoroMori21 Textdatei einlesen im Array (Selection Sort Algorithmus) Java Basics - Anfänger-Themen 3
S Wort einlesen Array ausgeben Java Basics - Anfänger-Themen 4
I Java String einlesen und auslesen Java Basics - Anfänger-Themen 11
A Input/Output Mehrere Csv-Dateien einlesen Java Basics - Anfänger-Themen 2
S CSV einlesen und mit Komma trennen Java Basics - Anfänger-Themen 12
CptK Richtigen Pfad beim einlesen von Datei finden Java Basics - Anfänger-Themen 2
I Java-Wort einlesen und ausgeben Java Basics - Anfänger-Themen 7
J Csv-Datei einlesen Java Basics - Anfänger-Themen 52
JD_1998 Arrays einlesen, zwischenspeichern und wieder ausgeben Java Basics - Anfänger-Themen 8
L Konstruktor für eine Map-Datei/Map-Datei einlesen Java Basics - Anfänger-Themen 5
L Datein einlesen Java Basics - Anfänger-Themen 1
E Input/Output Datei anhand von Dateinamen einlesen Java Basics - Anfänger-Themen 5
C Datei über relative Pfade einlesen Java Basics - Anfänger-Themen 6
A Input/Output Dateien einlesen und ausgeben Java Basics - Anfänger-Themen 7
A Klasse um daten zu einlesen Java Basics - Anfänger-Themen 26
A 2d Arrays aus txt.file einlesen Java Basics - Anfänger-Themen 16
A Textdatei mit stream einlesen Java Basics - Anfänger-Themen 2
P Datei einlesen und zurückgeben Java Basics - Anfänger-Themen 5
G String wird nach Einlesen aus Datei nicht erkannt Java Basics - Anfänger-Themen 3
M String in Scanner einlesen Java Basics - Anfänger-Themen 6
E TXT FILE EINLESEN Java Basics - Anfänger-Themen 4
M Einzelzeichen einlesen Java Basics - Anfänger-Themen 2
C (char) Array einlesen Java Basics - Anfänger-Themen 8
B HTML File einlesen inkl. Bilder? Java Basics - Anfänger-Themen 2
E Mehrere Eingabezeilen gleichzeitig einlesen Java Basics - Anfänger-Themen 7
B HTML Datei einlesen und HTML Code in String wandeln Java Basics - Anfänger-Themen 19
V Schleife für das Einlesen von Werten für int Variablen, die Bestandteil von Arrays sein sollen Java Basics - Anfänger-Themen 16
P Text Datei einlesen und übertragen Java Basics - Anfänger-Themen 15
P Array einlesen von Konsole Java Basics - Anfänger-Themen 8
D Eingaben in String Array einlesen Java Basics - Anfänger-Themen 12
B CSV einlesen - Parameter a) encoding b) delimiter Java Basics - Anfänger-Themen 7
R Compiler-Fehler Einlesen von Konsolenparameter funtioniert nichtmehr Java Basics - Anfänger-Themen 4
I OOP Objektnamen über die Konsole richtig einlesen Java Basics - Anfänger-Themen 9
J Einlesen von Datei funktioniert nicht Java Basics - Anfänger-Themen 8
H Einlesen Java Basics - Anfänger-Themen 8
H Einlesen von Zahlen Java Basics - Anfänger-Themen 20
B mehrere Werte mit scanner und while schleife einlesen, max berechnen bzw addieren Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben