ich bin recht neu bei Java und hab nun ein Monsterprojekt am Hals. Dazu bräuchte ich ein paar Tipps!
In einer Klasse handel ich sowas wie ein DataGrid. Darin werden in einer Matrix Informationen gespeichert. Eine Methode der Prozedur soll es nun ermöglichen, ein Objekt der Klasse in ein anderes zu kopieren. Ich hab den Code mal angehängt.
Code:
//Kopiert den Inhalt von einem DataGrid in ein anderes
void copyDataGrid(String originalDataGrid[][])
{
myDataGrid[0][0] = originalDataGrid[0][0];
System.out.println(myDataGrid[0][0]);
}
In meinem Hauptprogramm soll das ganze wie folgt aussehen:
Code:
public static void main(String[] args)
{
CDatagrid myTable = new CDatagrid("-");
CDatagrid my2Table = new CDatagrid("-");
myTable.addToDataGrid("x",0)
my2Table.copyDataGrid(myTable);
}
Wie kann ich das programmieren, dass es funktioniert?
@na-oma: Danke für die Antwort. Wie das kopieren im einzelnen funktioniert, soweit bin ich ja noch gar nicht gekommen. Mir geht es um die richtige Parameterdeklaration copyDataGrid(...) und wie ich diese Methode richtig aufrufe.
also die Matrix ist aus einem zweidimensionalem Array vom Typ String. Und ich würde gern eine Methode haben (void CopyDataGrid()) welcher ich ein anderes Datagrid (hier myTable) übergeben kann, und in der anschließend dier Inhalt von myTable in dem Fall hier an my2Table übergeben wird.
public class CDataGrid implements Cloneable {
private final String[][] myDataGrid;
{
myDataGrid = new String[7][];
for (int i = 0; i < 7; i++)
myDataGrid[i] = new String[7];
}
public CDataGrid(String paraSign) {
for (int n = 0; n < 7; n++)
for (int m = 0; m < 7; m++)
myDataGrid[n][m] = paraSign;
}
public CDataGrid(CDataGrid orig) {
copyDataGrid(orig);
}
public CDataGrid(String[][] originalDataGrid) {
copyDataGrid(originalDataGrid);
}
public Object clone() {
return new CDataGrid(this);
}
public void copyDataGrid(CDataGrid dataGrid) {
copyDataGrid(dataGrid.myDataGrid);
}
public void copyDataGrid(String[][] originalDataGrid) {
for (int n = 0; n < 7; n++)
for (int m = 0; m < 7; m++)
myDataGrid[n][m] = originalDataGrid[n][m];
}
}
ich komm leider mit dem Coding nicht zurecht. Ich poste mal meine Klasse CDataGrid. Vielleicht kann mir dann jemand den Fehler sagen:
Code:
public class CDatagrid implements Cloneable
{
//Instanzvariablen
private String myDataGrid [][] = new String [7][7];
private String strDummySign;
private String grid[][];
//-------------------------------------------------------------------------
//Konstruktor
//enthält Zeichen, welches als Leerzeichen in das Datagrid geschrieben wird
// Zeichen ist für die Lebensdauer des Objektes gleich
CDatagrid (String paraSign)
{
try
{
strDummySign = paraSign;
for(int i = 0;i <= 6;i++)
{
for(int j = 0; j <= 6; j++)
{
myDataGrid[i][j] = strDummySign;
}
}
}
catch (Exception e)
{
System.out.println("Fehler beim initialisieren des Konstruktors");
}
}
//------------------------------------------------------------------------
//fügt einen Zug zum Datagrid hinzu
//gibt true zurück, wenn das Element erfolgreich eingefügt wurde
boolean addToDataGrid (String sign,int colum)
{
//Übergabewert anpassen, Prozedur verlagt die Übergabe
//innerhalb der Indexgrenzen 0 bis 6
colum--;
try
{
//Übergabe prüfen
//Übergabe ist innerhalb der Indexgrenzen
if (colum >= 0 && colum <= 6)
{
//das oberste Element ist noch nicht belegt
if (myDataGrid[0][colum] == strDummySign)
{
//Zeichen an der richtigen Stelle einfügen
for (int i = 6;i >= 0;i--)
{
//Prüfen, ob der Zug hier eingefügt werden muss
if(myDataGrid[i][colum] == strDummySign)
{
myDataGrid[i][colum] = sign;
return true;
}
}
}
else
{
System.out.println("Die Spalte ist voll");
return false;
}
}
//übergabe über- bzw. unterschreitet die Indexgrenzen
else
{
//Fehler ausgeben
CErrorHandler errDatagrid = new CErrorHandler("Indexgrenzen überschritten");
errDatagrid.ShowDialogBox();
//System.out.println("Indexgrenzen überschritten");
return false;
}
}
catch (Exception e)
{
System.out.println("Fehler beim Schreiben ins Datengrid");
return false;
}
//Alles abgearbeitet, Wahr zurückgeben
return true;
}
//-------------------------------------------------------------------------
//druckt den Inhalt des DataGrids in der Konsole
void printDataGrid()
{
for (int i = 0;i <= 6;i++)
{
for(int j = 0;j <= 6;j++)
{
//Zeichen einer Zeile hintereinander ausgeben
System.out.print(myDataGrid[i][j] + " ");
}
//Zeilenumbruch generieren und die nächste Zeile durcken
System.out.println();
}
}
//-------------------------------------------------------------------------
//Kopiert den Inhalt von einem DataGrid in ein anderes
void copyDataGrid(String originalDataGrid[][])
{
try
{
myDataGrid[0][0] = originalDataGrid[0][0];
System.out.println(myDataGrid[0][0]);
}
catch (Exception e)
{
CErrorHandler errMessage = new CErrorHandler("Fehler beim kopieren");
errMessage.ShowDialogBox();
}
}
}
Der Aufruf soll wie folgt aussehen:
Code:
CDatagrid myTable = new CDatagrid("-");
CDatagrid my2Table = new CDatagrid("-");
if (myTable.addToDataGrid("x",0))
{
System.out.println("Einfügen erfolgreich");
myTable.printDataGrid();
}
my2Table.copyDataGrid(my2Table);