java Matrix als klasse (array)?

3 Antworten

Das was du machst: Du erstellst eine Klasse mit dem Namen Matrix. Im Konstruktor der Klasse Matrix erstellst du eine zweidimensionale Array als lokale Variable, die nicht weiter verwendet wird.

Anschließend Rufst du den Konstruktor deiner Matrix Klasse in der Main Methode auf. Und das ist bereits der Denkfehler: Dadurch dass sich die lokale Variable im Konstruktor befindet, wird nicht die gleich die ganze Klasse zu einer zweidimensionalen Array.

Wenn deine Klasse eine zweidimensionale Array 'kreieren' soll, bist du garnicht so weit weg von der Lösung.

Deklariere eine zweidimensionale Array als Instanz-Variable.

Im Konstruktor weist du dieser Instanz-Variable dann deine neue Array zu (mit Anzahl Zeilen und Spalten).

Anschließend nimmst du noch einen Getter der dir die zweidimensionale Array zurück liefert.

Instanz-Variable? Könntest du das bitte etwas erläutern.

Und was ist ein Getter?

0
@leonardomessi

Das Schöne an grundlegenden Grundlagen ist, dass einem da Millionen Foreneinträge, Tutorials, Bücher etc weiter helfen. Sowas sollte man sich erst mal aneignen. Zumindest erst mal lesen und dann die Fragen stellen.

0
@leonardomessi

Eine Instanz-Variable ist eine nicht-statische Variable innerhalb einer Klasse, die eine Gültigkeit innerhalb einer Instanz hat.

private Matrix[][] matrix;

ein Getter ist eine Methode, welche eine Instanz-Variable zurückliefert.

public Matrix[][] getMatrix() {
    return matrix;
}
0

Erstmal sehe ich einige Fehler. Wenn die Methode "Matrix" einen Wert zurückgeben soll, musst du das deklarieren. Außerdem fehlt dann entsprechend der return und ich vermute, dass du die Methode als "static" angeben musst.

"System.out.println(marray);"

Dort versuchst du eine Methode aufzurufen, ohne die Parameterangabe. Oder aber dir fehlen Anführungsstriche.

"Matrix(){}"

Was versuchst du da?

for (int i=0; i<3; i++){
   
System.out.println(marray);
}

Warum gibts du 3 mal das gleiche aus (nämlich den Namen des Objekts marray)?

überreste vom test gewesen.

0
@leonardomessi

Ja und wo  ist dann der Code, der hier beurteilt werden soll - nämlich die Verwendung der Klasse?

0
@Gegengift

Das ist die Frage. :DDDDD

Mein aktuelles Problem ist, ich will ein 2 dimensionales Array mithilfe einer Klasse kreieren. Und das klappt mit dem gegebenen Code nicht.

Das weitere programmieren in der Main ist dafür unwichtig.

0
@leonardomessi

Alles klar.

Matrix [][] marray = new Matrix[columns][rows];

Du erstellst also ein Matrix Objekt, das ein zweidimensionales Array enthält, in dem man wiederum Matrix Objekte speichern kann. Sinn?

Mein aktuelles Problem ist, ich will ein 2 dimensionales Array mithilfe einer Klasse kreieren

Wenn es darum geht ein Array durch eine Klasse zu kapseln, dann initialisierst du im Konstruktor nur ein einfaches int-Array. Dieses int-Array muss ein Feld in der Klasse sein. Dann kannst du noch Methoden definieren, um darauf zuzugreifen.



0
@Gegengift

Ich glaube es kommt so ein bisschen raus, das ich noch nicht ganz vertraut mit der Materie bin.

Alles was ich will, ist ein Array zu konstruieren. Und zwar mit einer Klasse.

Zwei Inputs für die Größe des Arrays. Und daraus soll dann das Programm ein Array erstellen.

Ich weis einfach nur nicht, wie ich das bewerkstelligen kann.

Liegt der Fehler in der main oder in der Klasse?

Was muss ich in der Main eingeben, damit er das macht was ich will?

0
@leonardomessi

Im Konstruktor erstellst du ja korrekterweise das Array. Nur dass es kein Array für Matrix-Objekte sein soll, sondern ein Array für einfache int-Werte.

Du erstellst also ein int-Array. Und speichern tust du das in einer Variablen der Klasse (die musst du noch anlegen)

0

"nämlich den Namen des Objekts marray"

Ich bin mir sicher, dass man mit Aufruf einer Methode innerhalb einer Konsolenausgabe nicht den Namen ausgibt (außer vll. man würde das in Anführungsstriche fassen).

Auch wenn ich sagen muss, dass da ein Haufen Fehler im Quellcode ist (da fehlt z.B. die Parameterübergabe oder wenn es "marray" ausgeben soll, dann fehlen die Anführungsstriche).

0
@Etter

Ich bin mir sicher, dass man mit Aufruf einer Methode innerhalb einer Konsolenausgabe nicht den Namen ausgibt

Doch dabei wird halt automatisch die toString-Methode des Objekts aufgerufen. Und die gibt in der Standardimplementierung den vollqualifizierten Namen des Objekts zurück.

0
@Gegengift
public class Test {
public static void main(String[] args) {
System.out.println(Matrix(1,2));
}
public static int Matrix(int test1, int test2) {
return (test1+test2);
}
}

Dann dürfte das ja auch nicht funzen. Ausgabe ist aber 3. Vll. reden wir auch aneinander vorbei.

Wenn man jetzt die Parameterübergabe beim Syso weglässt, dann bekommt man eine Fehlermeldung.

0
@Etter

Du übergibst ja kein Objekt sonder einen int-Wert.

Oben wird aber ein Objekt der Klasse Matrix übergeben (bzw. ein Array-Objekt mit Matrix Objekten). Und wenn man ein Objekt dem Konsolenaufruf übergibt, dann wird die toString-Methode aufgerufen und die gibt den Namen des Objekts zurück.

Z.B. so etwas:

[[LMyClass$Matrix;@74a14482
1

C# Variable in anderer Klasse verwenden

Guten Abend,

wie kann ich eine Variable aus einer Klasse in einer anderen Klasse verwenden? Hier mein Quellcode:

 public class Spielfeld
{
    int weite;
    int höhe;

    public void abmessungSpielfeld(int iweite, int ihöhe)
    {
        weite = iweite / 20;
        höhe = ihöhe / 20;
    }
}

public class Snake
{   
    public void neuerPunkt()
    {
        Random r = new Random();
        int zahl1 = r.Next(0, weite);
        int zahl2 = r.Next(0, höhe)
    }
}

Danke schonmal

...zur Frage

Matrix mit Array addieren in Java? Methodenkopf Matrix Probleme?

Hallo an alle Programmierer !

ich hab Probleme bei der Addition von Arrays in Java.

Folgenden Quellcode habe ich bisher :

public void add(Matrix m) {

    for (int i = 0; i < values.length; i++) {

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

            values[i][j] = values[i][j]+this.values[i][j];

    }}}

Ich würde gerne das Array values mit der Matrix m addieren. Doch wenn ich m verwende, sagt mir Eclipse "The type of the expression must be an array type but it resolved to a matrix".

Also sind Arrays ungleich Matrizen? Wie löse ich das Problem?

Vielen Dank im voraus ! Gruß

...zur Frage

Wie sieht die Punktnotation in Java aus oder wie kann ich auf auf andere Klassen zugreifen?

Wie kann ich in der Klasse Telefon die Methoden aus der Klasse Telefonbuch verwenden ? Wenn ich es mit Punktnotation versuche wie z.B.

public void eintrag_hinzufuegen(String name)
{
    Telefonbuch.hinzufuegen(name);
}

, kommt die Fehlermeldung : non static method cannot be referenced from a static context

1)

import java.util.ArrayList;
public class Telefon
{
protected ArrayList <Telefonbuch> telefonbuch;
protected boolean eingeschaltet;
        
        public Telefon()
    {
        // initialise instance variables
        telefonbuch = new ArrayList <Telefonbuch>();
    }
    
    public void anrufen (String name)
    {
    }
    
    public void einschalten()
    {
        eingeschaltet = true;
    }
    
    public void telefonbuch_uebersicht()
    {
        
    }
    
    public void eintrag_hinzufuegen(String name)
    {
    }
    
    public void eintrag_entfernen(String name)
    {
    }
    
    public boolean eintrag_suchen(String name)
    {
    }
}

2)

import java.util.Arrays;

/**
 * Write a description of class Telefonbuch here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Telefonbuch
{
    // instance variables - replace the example below with your own
    private int anzahl_eintrag;
    private int kapazitaet;
    private String[] name_liste;
    protected boolean gefunden;

    /**
     * Constructor for objects of class Telefonbuch
     */
    public Telefonbuch()
    {
        // initialise instance variables
        String [] name_liste = new String[kapazitaet];
        gefunden = false;
    }
    
    public void set_kapazitaet(int x)
    {
        kapazitaet = x;
    }
    
    public void telefonbuch_uebersicht()
    {
        for(int i=0; i < name_liste.length; i++)
        {
        System.out.println(name_liste[i]);
        }
    }
    
    public void hinzufuegen(String name)
    {
        
    }
    
    public void entfernen(String name)
    {
    }
    
    public boolean suchen(String name)
    {
        for(int i=0; i < name_liste.length; i++)
        {
         if(name_liste[i].equals(name))
         {
         gefunden = true;
         }
         else
         {
         //Abbruch
         }
        }
        return gefunden;
    }
}

...zur Frage

Wie lerne ich Programmier-Basics?

Ich würde gerne mal ausprobieren zu programmieren, aber da es so viele verschiedene Sprachen gibt, bin ich etwas überfordert und weiß nicht direkt wo ich anfangen soll, vorallem weil ich zuerst noch die Basics lernen sollte. Wie kann ich das am besten machen? Oder soll ich gleich mit einer Sprache wie z.B Java beginnen? Gibt es dazu gute Youtube Kanäle oder Internet Seiten? Danke schonmal

...zur Frage

Java: Methodenaufruf in einem Object-Array?

Guten Tag,

ich habe ein Spielfeld, welches durch ein Object-Array dargestellt wird. Der Spieler wird durch ein P dargestellt und hat am Anfang die Positionen x und y, welche ich beim Einlesen mit BufferedReader bestimmt habe.

Beispielcode:

abstract class Area {
    public boolean canMove();
}



class A extends Area {
    public boolean canMove() {...}
}



class B extends Area implements InterF {
    public boolean canMove() {...}
    public void trigger() {...}
}



interface InterF {
    public void trigger();
}


class Map {
    Area[][] area;
    ... 
    private void build {
         for (int y = 0; y < area.length; y++){
            for (int x = 0; x < area[y].length; x++) {
                 switch (area[y][x]) {
                    case A: 
                        area[y][x] = new A(); 
                        break;
                    case B: 
                        area[y][x] = new B(); 
                        break;
            }
        }
}

Wenn ich jetzt meinen Spieler in dem Array bewege, wie kann ich wissen, welches Object sich in dem Array-Feld [y][x] befindet (A oder B) und wie kann ich dann die Methode canMove() ausführen und ggf trigger() aus B?

...zur Frage

Java Array einlesen.

Hallo ich fange neu mit Java an und habe folgendes Problem:

Ich möchte einen Array von 15 er Länge einlesen und hab volgendes bereits geschrieben :


import java.util.Scanner;

public class Aufgabe2 {

public static Scanner in;

public static void main (String[] args) { int a[] = new int[15];

/* Einlesen eines 15'er Array's */

for (int i = 0; i < 15; i++){ a[i] = in.nextInt(); }

/* Ausgabe */

for (int i = 0; i < 15; i++){ System.out.printf("%d", a[i]); }

} }


Nun bekomme ich aber immer folgeden Fehlermeldung:

Exception in thread "main" java.lang.NullPointerException

woran liegt das was hab ich falsch gemacht?

Danke schonmal für eure Hilfe.

GLG Ede

...zur Frage

Was möchtest Du wissen?