# Verwendung von Instanzvariablen Instanzierung von Objekten Objekte als Datenspeicher Direkte Zuweisu



## alex2306 (2. Dez 2018)

Hallo,
ich habe folgende Aufgabe (siehe Anhang) als Hausaufgabe bekommen. Ich wäre sehr dankbar für Hilfe und Tipps. Soviel habe ich bereits, bin mir aber überhaupt nicht sicher mit den Klassenmethoden, da wir gerade erst damit angefangen haben.


```
public class Malkasten {
 public static String [] kasten;
 
 public static void setKasten (String[] inhalt) {
  inhalt=kasten;
 }
 
 public static boolean kastenLeer; {
 for (int i=0; i<kasten.length; i++) {
  if(i<=0) {
  
  }
 }
 }
 public static int anzahlPinsel;
 
 public static String
 
 public static void printKasten() {
 
 }
 
 public static void main(String[] args) {
  // TODO Auto-generated method stub
 
  Malkasten.printKasten();
  Malkasten.setKasten(new String[]{"Pinsel","pinsel","Rote Farbe","Blaue Farbe","Gelbe Farbe","Deckweiss"});
  System.out.println("Anzahl Pinsel: "+Malkasten.anzahlPinsel());
  Malkasten.printKasten();
 }

}
```


----------



## temi (2. Dez 2018)

```
// Klasse zur Speicherung von Stringdaten
class Data {
   String data; // Instanzvariable

   // Konstruktor
   public Data(String data) {
      this.data = data;
   }

   // Getter
   public String getData() {
      return data;
   }
}
```

Reicht das?


----------



## alex2306 (2. Dez 2018)

@temi
Nicht wirklich. Das Grundprinzip verstehe ich. Nur leider habe ich wirklich Probleme es umzusetzen bei Aufgabenstellungen. Habe jetzt nochmal wie ich anfangen würde, oben mit reingeschrieben. Ich verstehe nur nicht, wie ich richtig mit den Klassenmethoden umgehe und sie mit Klassenvariablen kombiniere.


----------



## temi (2. Dez 2018)

alex2306 hat gesagt.:


> ```
> public static void setKasten (String[] inhalt) {
> inhalt=kasten;
> }
> ```



Schau dir das noch mal genau an. In Java funktioniert eine Zuweisung so:

variableDerEtwasZugewiesenWird = wertDerZugewiesenWird

Du versuchst der übergebenen Parametervariablen "inhalt" den Wert der Klassenvariable "kasten" zuzuweisen.


----------



## alex2306 (2. Dez 2018)

@temi
Ich habe die Zuweisung oben nun geändert und versucht den Code weiterzuschreiben .Trotzdem komme ich bei den Klassenmethoden wo im Moment ; ich sag mal wo kein Leben drin ist, immer noch nicht wirklich weiter:


```
public class Malkasten {
 public static String[] kasten;
 public static void setKasten(String[] inhalt) {
  // TODO Auto-generated method stub
  kasten=inhalt;
 }
 public static boolean kastenLeer;
 {
  for (int i = 0; i < kasten.length; i++) {
   if (kasten[i] != null || kasten.length==0) {
    kastenLeer = true;{
    }
   } else {
    kastenLeer = false;
   }
  }
 }
public static int anzahlPinsel(){
 return 0;
 
 }
public static String kastenAnschauen(){
 return null;
 }
 
 public static void printKasten() {
  // TODO Auto-generated method stub
 }

 public static void main(String[] args) {
  // TODO Auto-generated method stub
  Malkasten.printKasten();
  Malkasten.setKasten(
    new String[] { "Pinsel", "pinsel", "Rote Farbe", "Blaue Farbe", "Gelbe Farbe", "Deckweiss" });
  System.out.println("Anzahl Pinsel: " + Malkasten.anzahlPinsel());
  Malkasten.printKasten();
 }
}
```


----------



## MoxxiManagarm (2. Dez 2018)

alex2306 hat gesagt.:


> @temi
> Trotzdem komme ich bei den Klassenmethoden wo im Moment ; ich sag mal wo kein Leben drin ist, immer noch nicht wirklich weiter:



Nimms mir nicht übel, aber im Text steht doch quasi schon alles haarklein drin was du tun musst...

Ich helfe dir bei der einen Methode, vielleicht hilft es dir beim verstehen. Die anderen Methoden sind genauso einfach...


```
public static boolean kastenLeer { // Das Semikolon hier entfernt
  if(kasten == null || kasten.length == 0) return true;
  else return false; 
}
```


----------



## alex2306 (2. Dez 2018)

MoxxiManagarm hat gesagt.:


> Nimms mir nicht übel, aber im Text steht doch quasi schon alles haarklein drin was du tun musst...


Erstmal danke fürs überhaupt helfen wollen. Ich habe auch nicht erwartet, dass mir jemand die Methoden hinschreibt, sondern eher was erklären könnte. Ich mache das ganze auch erst seit wenigen Wochen und für jemanden der das länger macht mag das alles sofort logisch sein, aber ich verstehe es eben noch nicht, sonst würde ich nicht fragen.

Außerdem funktioniert bei mir das Code-Stück leider nicht.


----------



## Javinner (2. Dez 2018)

Poste bitte die Aufgabenstellung nächstes Mal als Text, dann kann man die Punkte besser editieren.

In der Aufgabenstellung steht, du sollst die Kiste durchgehen und die Anzahl der Pinsel ausgeben, sprich aller Strings, welche den Namen "Pinsel" tragen. In der Methode anzahlPinsel() wird im Augenblick die Null zurückgegeben. Nun musst du die Aufgabenstellung implementieren.
In Pseudo-Code würde es heißen:

gehe die Kiste durch
immer dann, wenn ein String den Namen "Pinsel" trägt, ganz von Klein- oder Großschreibung abgesehen, zähle diese
gebe den Wert der "Zählvariablen" an den Aufrufer zurück
Also dann in der Methode drin:

erstelle eine Variable vom Typ int Name zähler;
iteriere durch das Array kasten
wenn an der Stelle x im Kasten das Wort "Pinsel" sich befindet (equalsIgnoreCase) erhöhe Variable zähler um eins
gebe am Ende der Methode Variable zähler zurück return zähler;


```
public static int anzahlPinsel(){
    return 0;
}
```


----------



## Javinner (2. Dez 2018)

Primitive Data Types
Arrays
Schleifen 
Methoden einer Klasse


----------



## Javinner (2. Dez 2018)

```
public class SomeExample
{

    public static void main(String[] args)
    {
        String[] letter_array =
        {
            "A", "B", "a", "c", "C", "b", "B", "A"
        };
        int bigA = 0;
        int smallA = 0;
        int summAa = 0;
        for (String s : letter_array)
        {
            if (s.equals("A"))
            {
                bigA++;
            }
            if (s.equals("a"))
            {
                smallA++;
            }
            if (s.equalsIgnoreCase("a"))
            {
                summAa++;
            }
        }
        System.out.println(String.format(Locale.GERMAN, "BigA: %d, Smalla: %d, SummAa: %d%n", bigA, smallA, summAa));
    }
/** Output */
BigA: 2, Smalla: 1, SummAa: 3
}
```
Lerne Grundlagen


----------



## MoxxiManagarm (3. Dez 2018)

alex2306 hat gesagt.:


> Erstmal danke fürs überhaupt helfen wollen. Ich habe auch nicht erwartet, dass mir jemand die Methoden hinschreibt, sondern eher was erklären könnte. Ich mache das ganze auch erst seit wenigen Wochen und für jemanden der das länger macht mag das alles sofort logisch sein, aber ich verstehe es eben noch nicht, sonst würde ich nicht fragen.
> 
> Außerdem funktioniert bei mir das Code-Stück leider nicht.


Ich bin vielleicht mit dem falschen Bein aufgestanden, ich entschuldige mich dafür. Nichts desto trotz steht wirklich jeder einzelner Schritt beschrieben da. Du musst "nur" noch übersetzen. Ich weiß nicht wie man das noch erklären soll.

Hier nochmal ein Übersetzungsbeispiel anhand der Methode oben.

```
public static boolean kastenLeer { // vorgegeben
  if(kasten == null // Falls die Klassen Variable kasten java-null ist...
    || kasten.length == 0) // oder keine Speicherpklätze hat (siehe length)...
       return true; // soll true zurückgegeben werden ...
  else return false; // Trifft keine dieser Bedingungen zu, soll false zurückgegeben werden.
}
```

Wie du siehst konnte ich den Text 1:1 hinter die Zeilen setzen. Dieses Übersetzen musst du können, dabei können wir dir kaum helfen, so Leid es mir tut.

Im übrigen würden die meisten das noch verkürzen auf

```
public static boolean kastenLeer {
  return (kasten == null || kasten.length == 0);
}
```
Ich hatte nur die lange Schreibweise gewählt, damit es noch verständlicher ist.


----------



## mihe7 (3. Dez 2018)

alex2306 hat gesagt.:


> Ich habe auch nicht erwartet, dass mir jemand die Methoden hinschreibt, sondern eher was erklären könnte.


Das würde hier wahrscheinlich jede/r gerne tun, dazu müsstest Du aber vielleicht mal konkreter werden. Was hättest Du denn gerne erklärt?


----------

