# Matrizen aufgabe



## anfjoe (9. Apr 2012)

Tach liebe Leute! 
ich habe hier einfach keinen Ansatz bei dieser Aufgabe  brauche die bis donnerstag!! 

Programmieren Sie eine Klasse Mat für das rechnen mit matrizen und eine anwnedungsklasse MatAnw mit der die methoden der matrizen rechnung aufgerufen werden.

Klasse ;at hat die Attribute n (Zeilenanzahl) m (Spaltenanzahl), k[][] (doppelt indiziertes Feld für die Koeffizienten der Matrix und ctr(Kontrollfeld ob die matrix korrekt gefüllt ist oder nicht.

Mat soll folgende Methoden enthalten:

void matAus(); Ausgabe für matrizen
Mat matAdd(Mat b); Methode zur addition zweier matrizen
Mat matSkm(double w); Methode zur skalaren Multiplikation

Mat matMul(mat b); Methode zur Multiplikation der gegebenen Matrix;(

so weit bin ich gekommen:
______________________________________________________________________________
public class Mat
{ int n; /*Zeilenzahl*/
  int m; /*Spaltenzahl*/
  int k [][]; /*Matrix*/
  int ctr;     /*Kontrollfeld*/

      /*Standardkonstruktor*/
      Mat(){}


      void matAus()
  {
     for (int i = 0; i < 2; ++i) {
         for (int j = 0; j < 2; ++j) {
        System.out.print(k_[j] + "\t");
         }
        }
     }



  }
   Mat matAdd(Mat b)
 {   Mat erg;
     int p=0;

     System.out.println("Eingabe der zweiten Matrix");
     System.out.println("Anzahl der Zeilen?");
     int n=IO1.einint();
     System.out.println("Anzahl der Spalten");
     int m=IO1.einint();

     for(int i=0; i<n; i++ )
     { p=p+1;

       for(int j=0; j<m; j++)
       {
         System.out.println("Bitte die"+p+".te Zeile eingeben ");
         k[j]=IO1.einint();
       }
     }
     /*Prüfe Spaltenzahl=Zeilenzahl*/
     int zl=k.length;
     int sl=k[0].length;
     if(zl!=sl){
      ctr=-1;
      System.out.println("Fehlerart"+ ctr + "liegt vor! Spaltenzahl ungleich Zeilenzahl!");
      }
      else{
        int erg[][]=new int[zl][sl];
        for(int i=0; i<n; i++ )
        {
          for(int j=0; j<m; j++)
          { erg[j]= k[j]+b[j];

           }
            }
            return erg;

       }

  }
_______________________________________________________________________________
Irgendwie kriege ich diese verbindung nicht hin zwischen der andwendungsklasse und der mat klasse.. ich weiß wirklich nicht weiter ich bin für jede hilfreiche antwort sehr dankbar!

liebe grüße_


----------



## GUI-Programmer (9. Apr 2012)

1. Fehlt die Fragestellen - wir werden hier schließlich nicht deine Aufgabe einfach so lösen, sondern dir dabei "helfen".
2. *Java™ Quelltext ist bitte in 
	
	
	
	






		Java:In die Zwischenablage kopieren


-Tags zu schreiben[/SIZE][/B][/COLOR]

*


----------



## Jodo (9. Apr 2012)

Hi,
formatiere deinen Code erstmal mit [JAVA ][/JAVA ] Tags. Das macht es uns wesentlich einfacher da durchzublicken.
Eine neue Matrix ohne irgendwelche Daten (Zeilen, Spalten, komplette Werte) zu erzeugen ist eher sinnfrei. Ein und Ausgabe sollte nicht in einer Methode stehen, die dafür da ist mit 2 Matrizen zu rechnen.
In deiner Hauptklasse machst du die Eingabe und Ausgabe. Diese hat Matrixobjekte und ruft auf diesen die entsprechenden Methoden auf.

Und es ist besser wenn du schreibst was genau dein Problem ist und direkte Fragen stellst. Weisst du wie man mit Arrays arbeitet, wie man mit Matrizen rechnet, etc.? Frage -> Antwort. Sowas wie "Ich brauch das bis Donnerstag, kanns aber nicht, macht mir das jemand?" wird hier kaum einer unterstützen.

Gruß Jodo


----------



## Landei (9. Apr 2012)

Jodo hat gesagt.:


> Sowas wie "Ich brauch das bis Donnerstag, kanns aber nicht, macht mir das jemand?" wird hier kaum einer unterstützen.



Jedenfalls kaum ohne pekuniäre Kompensation...


----------



## anfjoe (9. Apr 2012)

Also nochmal von vorne.. ich muss eine klasse Mat programmieren und eine Anwendungsklasse MatAnw. Die Mat klasse sollen folgende prototypen haben:

1) void matAus();
2) Mat matAdd(Mat b);
3) Mat matSkm(double w);
4) Mat matMult(Mat b);

und neben dem Standardkonstruktor soll die Klasse Mat auch noch über den folgenden Konstruktor verfügen: Mat(String u[])

Die Anwendungsklasse soll folgendes leisten: sie soll über eine main() eine menue() und eine matEin()-Methode verfügen, um matrizen einzulesen und die rechenarten für matrizen ausführen zu können. dann kann er solange eine rechenart auswählen , die weiteren Operanden und das ergebnis anzeigen. die MatEin methode hat folgenden Prototyp: static Mat matEin(int ex).


ich habe zuerst mit der matrizenausgabe angefangen:

```
public class Mat
{ int n; /*Zeilenzahl*/
  int m; /*Spaltenzahl*/
  int k [][]; /*Matrix*/
  int ctr;     /*Kontrollfeld*/

      /*Standardkonstruktor*/
      Mat(){}


      void matAus()
  {
     for (int i = 0; i <k.length; ++i) {
         for (int j = 0; j <k[0].length ; ++j) {
        System.out.print(k[i][j] + "\t");
         }
        }
     }
```

Ich bin mir einfach nicht sicher ob ich das richtige mache.. ich weiß nicht wo was eingelesen werden muss und der compiler streikt bei mir wenn ich anfange in der Anwendungsklasse folgendes eintippe:


```
class MatAnw
{public static void main (String args [])
{  Mat b=new Mat[][];

   int p=0;
   for (int i=0; i<2; i++){
     p=1+p;
    for (int j=0; j<2; j++){
        System.out.println("Bitte"+p+""+"te zeile eingeben!");
        b[i][j]=IO1.einint();
        }
   }
   b.matAdd();
```


----------



## njans (9. Apr 2012)

```
Mat b=new Mat[][];
```

Das macht auch keinen Sinn 
b ist ein Objekt des Types Mat. Wenn du ein Objekt erstellen willst, dann macht man das immer mit dem new Operator, welche dann den Konstruktor der Klasse aufruft. 
Du verschmischst das gerade mit 2D Arrays.


```
Mat b=new Mat();
```

Das ist das richtige. Wobei ich nun nicht weiß, ob Mat nicht auch einen Konstruktor bekommen sollte, welcher ein 2D Array aufnimmt.


----------



## Marcinek (9. Apr 2012)

Also Matrixaufgaben sind in fast allen Studiengängen auf der Tagesordnung. Gibt es nirgentwo laufenden Code??!

Tipp: Suche bei google:

"Der Compiler streikt".

Hmm... Solange ich programmiere hat der Compiler nie gestreikt. Gibt es hierzu die korrekte Fehlermeldung. Die BTW bei Google eingegeben bereits die Lösung liefern wird.

Falls du deine Musterlösung benötigst, schreibe mich an ;D


----------



## anfjoe (9. Apr 2012)

also die klasse Mat soll den Standardkonstruktor enthalten und einen konstruktor mit folgendem prototyp: Mat(String u[])

Für die Matrizen gilt halt das jede zeile gleich viele spaltenelemnte hat und jede u_ ist ein CSV-String, dessen Komponenten in Koeffizienten a.k[j] zu konvertieren sind. Misslingt diese konvertierung für eine Komponente, liegt Fehlerart -3 vor. Die Anzahl der CSV-komponenten von u[0] bestimmt die Spaltenanzahl m der zu konstruierenden Matrix. Und gibt es ein u, dessen CSV-Komponentenanzahl von der von u[0] abweicht, liegt ein fehlerart -4 vor..  ich verstehe das einfach nicht .. das bringt mich so durcheinander_


----------



## Marcinek (9. Apr 2012)

anfjoe hat gesagt.:


> Für die Matrizen gilt halt das jede zeile gleich viele spaltenelemnte hat und jede u_ ist ein CSV-String, dessen Komponenten in Koeffizienten a.k[j] zu konvertieren sind. Misslingt diese konvertierung für eine Komponente, liegt Fehlerart -3 vor._


_

Naja ich gehe davon aus, dass in u sowas steht: 1;2;2;3;4;5;6.

Du musst das splitten und die einzelenen Zahlen zu Integern parsen. Wenn das fehl schlägt: Exception mit Fehlercode 3?




anfjoe hat gesagt.:



			Die Anzahl der CSV-komponenten von u[0] bestimmt die Spaltenanzahl m der zu konstruierenden Matrix. Und gibt es ein u, dessen CSV-Komponentenanzahl von der von u[0] abweicht, liegt ein fehlerart -4 vor.. ich verstehe das einfach nicht .. das bringt mich so durcheinander 

Zum Vergrößern anklicken....



Wenn ich in u[0] sowas habe 1;2 (also zwei Elemente) und in u 1;2;3 (also drei Elemente) ==> Exeption mit Fehlercode 4_


----------



## njans (9. Apr 2012)

Also es scheint mir so gedacht zu sein:

Konstruktor:

```
public Mat(String[] input)
```

Dabei bekommst du als Eingabe (String[] input) diese Form:

```
{
"1,2,3",
"4,5,6",
"7,8,9"
}
```

Also input (bei dir im Text als u bezeichnet) wäre dann ein Array mit Strings, die die werte jeder Zeile sind in den Strings enthalten. Somit musst du die bei der Eingabe in ein int[][] umwandeln. Dazu gehst du durch input (mittels Schleife) und splittest die Strings an den Kommas auf (string.Split(",")). Danach musst du das dann in dein int[][] stecken.


----------



## anfjoe (9. Apr 2012)

Also mal ganz langsam... was und wie muss der anwender die matrix eingeben ? muss er eine matrix eingeben ?  oder zwei ? woo in der anwendungsklasse oder in mat ? und was hat das ganze mit matrizen zu tun mit u_ etc ? ich blicke da überhaupt nicht durch .._


----------



## Marcinek (9. Apr 2012)

anfjoe hat gesagt.:


> Also mal ganz langsam... was und wie muss der anwender die matrix eingeben ? muss er eine matrix eingeben ? oder zwei ?



Siehe Aufgabenstellung. Wir wissen es nicht ;D



anfjoe hat gesagt.:


> woo in der anwendungsklasse oder in mat ?



Definitiv in Anwendungsklasse.



anfjoe hat gesagt.:


> und was hat das ganze mit matrizen zu tun mit u_ etc ? _


_

Eine Matrix in Java könnte mit a[][] deklariert werden. Siehe

Java ist auch eine Insel – 3.8 Arrays

Wenn du ein Array aus Strings hast, die sich zu Arrays splitten lassen, dann hast du wieder String[][] ;D_


----------



## anfjoe (10. Apr 2012)

Muss diese Konvertierung in der anwendungsklasse erfolgen oder in der mat klasse ?


----------



## Marcinek (10. Apr 2012)

Überleg mal ;D

Was ist das Ergebnis der konvertierung des String[] ? Und welche Parameter nimmt der Konstruktor von MAT?


----------



## anfjoe (10. Apr 2012)

Also das ergebnis von mat das wäre in dem fall k[][] also double und er nimmt den paramter String u[] auf


----------



## anfjoe (10. Apr 2012)

Also mein Problem ist einfach folgendes : die anwendungsklasse soll die methode matEin() beinhalten: static Mat matEin(int ex)
und ex muss beim start von main() eingelesen werden! wenn ex = 1 ist dann muss der standardkonstruktor aufgerufen werden und wenn ex 2 ist dann muss der konstruktor von Mat aufgerufen werden.. also eine methode Matein() in der main-Methode :
[JAVA=42]static Mat matEin(int ex){

  Mat r;
  if(ex==1){
    r=new Mat();

  }
  if(ex==2){

   r=new Mat(u);
  }
  return r;
  }[/code]

Wo muss denn die Matrix eingegeben werden ? in der methode ? oder in der main-methode ?


----------



## Marcinek (10. Apr 2012)

Versuch das mal in der main zu machen. Mal gucken, auf welche "Probleme" du stoßen wirst.


----------



## anfjoe (10. Apr 2012)

```
class MatAnw
{public static void main (String args [])
{  int ex;
   String u[];
   System.out.println("Bitte einen Wert für ex eingeben:");
   ex=IO1.einint();

   System.out.println("Bitte die erste Matrix eingeben:");
   System.out.println("Zeilenanzahl?");
   
   int z=I01.einint();
   int p=0;

   for(int i=0; i<z;i++){
    p=p+1;
    System.out.println("Bitte die" + p +".te Zeile eintippen und die Koeffizienten mit , trennen:");
    u[i]=IO1.einstring();
    }


   matEin(ex);






static Mat matEin(int ex){

  Mat r;
  if(ex==1){
    r=new Mat();
    
  }
  if(ex==2){
   System.out.println("Bitte die erste Matrix eingeben:");

   r=new Mat(u);
  }
  return r;
  }
```

soweit bin ich erstmal gekommen.. der compiler zeigt andauernd das hier:

MatAnw.java:28:1: error: illegal start of expression
static Mat matEin(int ex){
^
MatAnw.java:28:18: error: ';' expected
static Mat matEin(int ex){
                 ^
MatAnw.java:28:25: error: ';' expected
static Mat matEin(int ex){
                        ^
MatAnw.java:40:11: error: ';' expected
  return r
          ^
4 errors


----------



## Marcinek (10. Apr 2012)

Schau dir mal an, wie Methoden in Java definiert werden. [private, protected, public] [static] ...

Alle Klammern da? Denke nicht.


----------



## anfjoe (10. Apr 2012)

ist doch alles da ? oder bin ich blind ? static rückgabewert MethName(parameter) {
                                                                                                                     } ?


----------



## Marcinek (10. Apr 2012)

Wo endet die Main - Methode?


----------



## anfjoe (10. Apr 2012)

```
class MatAnw
{public static void main (String args [])
{  int ex;
   String u[];
   System.out.println("Bitte einen Wert für ex eingeben:");
   ex=IO1.einint();

   System.out.println("Bitte die erste Matrix eingeben:");
   System.out.println("Zeilenanzahl?");
   
   int z=I01.einint();
   int p=0;

   for(int i=0; i<z;i++){
    p=p+1;
    System.out.println("Bitte die" + p +".te Zeile eintippen und die Koeffizienten mit ; trennen:");
    u[i]=IO1.einstring();
    }


   matEin(ex);






 static Mat matEin(int ex){

        Mat r;
        if(ex==1){
        r=new Mat();
    
        }
  if(ex==2){

   r=new Mat(u);
   }
   return r;

  }



 
}

  }
```


----------



## njans (10. Apr 2012)

*hust* Wo endet die Main Methode?


----------



## anfjoe (10. Apr 2012)

ist doch alles da oder ?


----------



## njans (10. Apr 2012)

```
class MatAnw
{
	public static void main(String args[])
	{
		int ex;
		String u[];
		System.out.println("Bitte einen Wert für ex eingeben:");
		ex = IO1.einint();

		System.out.println("Bitte die erste Matrix eingeben:");
		System.out.println("Zeilenanzahl?");

		int z = I01.einint();
		int p = 0;

		for (int i = 0; i < z; i++)
		{
			p = p + 1;
			System.out.println(
							"Bitte die"
							+ p	+ ".te Zeile eintippen und die Koeffizienten mit ; trennen:");
			u[i] = IO1.einstring();
		}
		matEin(ex);
	}

	public static Mat matEin(int ex)
	{
		Mat r;
		if (ex == 1)
		{
			r = new Mat();
		}
		if (ex == 2)
		{
			r = new Mat(u);
		}
		return r;
	}
}
```

So, ich hab das mal richtig formatiert, nun kann man das auch mal anschauen 
Fehler ist auch gleich mal gefixt ^^

Die Main Methode hatte keine schließende Klammer, du kannst keine Methoden in Methoden packen.


----------



## anfjoe (10. Apr 2012)

kann sich jemand mal meinen konstruktor anschauen ? 


```
Mat(String u[]){
          n=u.length;
          int i;
           String h[]=new String[n];
          for(i=0; i<n ;i++)
          h[i]=u[i].split(";");

          if(i==0){
            m=h.length;
            k=new double[n][m];
          }
          else{
            if(h[i].length==h[0].length){

            }
            else{
              ctr=-4;
              System.out.println("Fehlerart -4 ! Komponentenzahl weicht von" + u[0] + "ab!");
            }
          }
          int j;
          for(j=0;j<m;j++){
            try{
              k[i][j]=Double.parseDouble(h[j]);
              j=j+1;
              i=i+1;
            }
            catch(NumberFormatException ex1){
              System.out.println("Fehler: "+ex1.getMessage());
              ctr=-3;
              System.out.println("Konvertierung fehlgeschlagen! Fehlerart -3");
            }

          }

        }
```

der zeigt mir folgendes:

Mat.java:32:26: error: incompatible types
          h_=u.split(";");
                         ^
  required: String
  found:    String[]
Mat.java:39:20: error: cannot find symbol
            if(h.length==h[0].length){
                   ^
  symbol:   variable length
  location: class String
Mat.java:39:33: error: cannot find symbol
            if(h.length==h[0].length){
                                ^
  symbol:   variable length
  location: class String
3 errors_


----------



## njans (10. Apr 2012)

```
Mat(String u[])
	{
		n = u.length;
		int i;
		String[][] h = new String[n][]; // Das muss ein 2D array sein
		
		for (i = 0; i < n; i++)
		{
			h[i] = u[i].split(";"); // Hier splittest du ja jeden String in jeweils ein Array
		}
			
		if (i == 0)
		{
			m = h.length;
			k = new double[n][m];
		}
		else
		{
			if (h[i].length == h[0].length)
			{

			}
			else
			{
				ctr = -4;
				System.out.println("Fehlerart -4 ! Komponentenzahl weicht von"
						+ u[0] + "ab!");
			}
		}
		
		int j;
		
		for (j = 0; j < m; j++)
		{
			try
			{
				k[i][j] = Double.parseDouble(h[j]); // hier musst du über das 2D Array gehen, mit 2 schleifen
				j = j + 1;
				i = i + 1;
			}
			catch (NumberFormatException ex1)
			{
				System.out.println("Fehler: " + ex1.getMessage());
				ctr = -3;
				System.out
						.println("Konvertierung fehlgeschlagen! Fehlerart -3");
			}
		}
	}
```


----------



## anfjoe (10. Apr 2012)

okay n ist jetzt gesetzt was kommt aber in die andere klammer ? das verstehe ich nicht so ganz ..


----------



## anfjoe (10. Apr 2012)

MEnsch ich brauche dringend hilfe  alleine schaffe ich das net


----------



## njans (10. Apr 2012)

```
Mat(String u[])
	{
		n = u.length;
		
		if (n < 1)
		{
			System.out.println("Fehler: Array ist leer");
			//TODO: Hier muss nun entweder abgebrochen werden oder das Problem gelöst werden
		}
		
		String[][] stringArray = new String[n][]; 
		
		// Splitte die Strings
		for (int i = 0; i < n; i++)
		{
			stringArray[i] = u[i].split(";"); 
		}
		
		// Setze die Spaltenazhal/Zeilenanzahl
		m = stringArray[0].length;
		
		// Prüfe auf Korrektheit 
		for (int i = 0; i < stringArray.length; i++)
		{
			if (stringArray[i].length != m)
			{
				// Wenn nicht alle gleich lang sind, gibt es einen Fehler
				System.out.println("Fehler: Array " + i + "ist unpassend viele Eintraege");
			}
		}
		
		// Übertrage Daten ins Zielarray
		k = new double[n][m];
		
		for (int i = 0; i < n; i++)
		{
			for (int j = 0; j < m; j++)
			{
				try
				{
					k[i][j] = Double.parseDouble(stringArray[i][j]); 
				}
				catch (NumberFormatException ex1)
				{
					System.out.println("Fehler: " + ex1.getMessage());
					ctr = -3;
					System.out
							.println("Konvertierung fehlgeschlagen! Fehlerart -3");
				}
			}
		}
	}
```

So habs mal ausgebessert. So musst du nicht 10 if-Abfragen machen


----------



## anfjoe (10. Apr 2012)

Was hab ich denn in der anwendungsklasse falschgemacht ?  


```
class MatAnw
{
    public static void main(String args[])
    {
        int ex;
        String u[];
        System.out.println("Bitte einen Wert für ex eingeben:");
        ex = IO1.einint();

        System.out.println("Bitte die erste Matrix eingeben:");
        System.out.println("Zeilenanzahl?");

        int z=I01.einint();
        int p = 0;

        for (int i = 0; i < z; i++)
        {
            p = p + 1;
            System.out.println(
                            "Bitte die"
                            + p + ".te Zeile eintippen und die Koeffizienten mit ; trennen:");
            u[i] = IO1.einstring();
        }
        matEin(ex);
    }

    public static Mat matEin(int ex)
    {
        Mat r;
        if (ex == 1)
        {
            r = new Mat();
        }
        if (ex == 2)
        {
            r = new Mat(u);
        }
        return r;
    }
}
```

compiler:

MatAnw.java:13:15: error: cannot find symbol
        int z=I01.einint();
              ^
  symbol:   variable I01
  location: class MatAnw
MatAnw.java:36:25: error: cannot find symbol
            r = new Mat(u);
                        ^
  symbol:   variable u
  location: class MatAnw
2 errors


----------



## matze8426 (10. Apr 2012)

Nutzt du Eclipse? Mach mal ein Clean in deinem Projekt und versuch es erneut.


----------



## anfjoe (10. Apr 2012)

nein ich benutze den java editior.. bin noch 'n anfänger ^^ könntest du mir eventuell bei der anwendungsklasse behilflich sein ?


----------



## njans (10. Apr 2012)

```
IO1.einint();
```

Was für eine Klasse/Variable is IO1 ?
Was macht die Methode einint() ?


----------



## anfjoe (11. Apr 2012)

Eine Methode für eine Eingabe.. die klasse ist mit drin im ordner


----------



## Marcinek (11. Apr 2012)

1. Die Klasse heisst bestimmt IO. 
2. Dir fehlen einfach die Grundlagen. Zum Beispiel Sichtbarkeit von variablen.. ich hatte ja schon geschrieben, versuche es in der Main und du wirst sehen auf welche Probleme du stoßen wirst. Nun hier sind wir nun, wie kommt das u in die andere Methode.?
3. Du hast dein Array nicht initialisiert. 

Nimm dir ein Java Buch und frische dein wissen auf oder lerne Google zu nutzen.


----------



## anfjoe (11. Apr 2012)

jaa das kein sein.. aber wie bekomme ich denn u in die main methode ?


----------



## njans (11. Apr 2012)

Marci hat da schon einen Punkt getroffen. Du solltest schon deine Wissenslücken ausfüllen, ansonsten musst du uns alles aus der Nase ziehen. 

Entweder als statische Variable

```
private static String[] u;
```

Oder du übergibst es als Parameter 

```
void meineMethode(String[] u)
```


----------



## anfjoe (11. Apr 2012)

MatAnw.java:6:9: error: illegal start of expression
        static String u[];
        ^
1 error


wieso funzt das nicht ?


----------



## njans (11. Apr 2012)

Weil du versuchst, einen static string in eine Methode zu schreiben?


----------



## anfjoe (11. Apr 2012)

ja .. aber wie mache ich das denn sonst ?  mit private muss ich ja ne getmethode programmieren  ich weiß nciht wie sowas funzt.. ihr müsst mir nur behilflich sein bitte .. weil ich das nicht alleine hinkriege muss die kacke bis morgen abgeben


----------



## njans (11. Apr 2012)

Du brauchst getter und setter nur dann, wenn der Zugriff auf das Objekt aus einer anderen Klasse erfolgt.


```
class MatAnw
{
  private static String[] u; // das muss dann natürlich initialisiert werden

    public static void main(String args[])
    {
        int ex;
        //String u[]; das muss dann weg
        System.out.println("Bitte einen Wert für ex eingeben:");
        ex = IO1.einint();
 
        System.out.println("Bitte die erste Matrix eingeben:");
        System.out.println("Zeilenanzahl?");
 
        int z=I01.einint();
        int p = 0;
 
        for (int i = 0; i < z; i++)
        {
            p = p + 1;
            System.out.println(
                            "Bitte die"
                            + p + ".te Zeile eintippen und die Koeffizienten mit ; trennen:");
            u[i] = IO1.einstring();
        }
        matEin(ex);
    }
 
    public static Mat matEin(int ex)
    {
        Mat r;
        if (ex == 1)
        {
            r = new Mat();
        }
        if (ex == 2)
        {
            r = new Mat(u);
        }
        return r;
    }
}
```


----------



## anfjoe (11. Apr 2012)

jetzt sagt er mir r have not been initialized.. 


```
public static Mat matEin(int ex)
    {
        Mat r;
        if (ex == 1)
        {
            r = new Mat();

        }
        if (ex == 2)
        {
            r = new Mat(u);
        }
        return r;
    }
```

die aufgabe hieß ja wenn ex == 1 ist dann muss der standardkonstruktor aufgerufen werden und wenn ex ==2 dann der andere konstruktor..


----------



## njans (11. Apr 2012)

Natürlich, was wäre denn, wenn ex == 3 ist ? 
Da fehlt ein else.
Du kannst natürlich das auch gleich bei der Deklaration mit null initialisieren, aber dann musst du damit später auch rechnen, dass es null sein kann ^^


----------



## Marcinek (11. Apr 2012)

anfjoe hat gesagt.:


> ja .. aber wie mache ich das denn sonst ? mit private muss ich ja ne getmethode programmieren  ich weiß nciht wie sowas funzt.. ihr müsst mir nur behilflich sein bitte .. weil ich das nicht alleine hinkriege muss die kacke bis morgen abgeben



Vermutlich wirst du den Termin verschieben müssen.



anfjoe hat gesagt.:


> jetzt sagt er mir r have not been initialized..



Kann man das nicht ergooglen? Oder zumindest ins Deutsche übersetzten? Die Variable r wurde nicht vorbelegt. Jetzt wird es schwierig. Wie soll sie den vorbelegt werden? 

Nun muss man wissen, dass wenn man nicht weiß, welches Objekt da rein soll, man auch null sagen kann. Schau da mal in ein Javabuch.


----------



## matze8426 (11. Apr 2012)

Wenn ihr eine so "komplexe" Aufgabe bekommen habt, müsst ihr doch vorher auch das entsprechende Grundwissen behandelt haben, oder? Also wie man Variablen an Methoden übergibt, was public, private, protected etc. heißt usw. und sofort...


----------



## Landei (11. Apr 2012)

```
public static Mat matEin(int ex)
    {
        Mat r = null;
        if (ex == 1)
        {
            r = new Mat();
 
        }
        if (ex == 2)
        {
            r = new Mat(u);
        }
        return r;
    }
```

Allerdings hast du dann das Problem, dass der Rückgabewert [c]null[/c] ist, wenn ex weder 1 noch 2 ist.


----------

