# Ich brauche ein wenig Hilfe bei einer einfachen Aufgabe



## DaDaChuck (23. April 2020)

Hallo, ich bin Schüler und mache aktuell unsere Hausaufgabe in Informatik. Diese besteht daraus einfach einen Menschen zu "erfinden" und ihm über Strings so Sachen wie Alter, Gewicht etc. zuzuordnen, das hab ich auch hinbekommen.

```
public class Aufgabe1 {
  public static void main (String [] ars) {
    String Name;
      Name = "Soeren";
    String Alter;
      Alter = "18";
    String Geschlecht;
      Geschlecht = "männlich";
    String Groesse;
      Groesse = "1.85";
    String Gewicht;
      Gewicht = "72";
    String BMI;
      BMI = "21";
    {
      System.out.println("Hallo, " + Name +".");
      System.out.println("Du bist "+ Alter +" Jahre alt und bist "+ Geschlecht+".");
      System.out.println("Du wiegst "+Gewicht+" KG und bist "+Groesse+" Meter groß.");
      System.out.println("Das bedeutet, dein BMI liegt bei "+BMI+".");}
    }
  }
```
Jetzt soll ich in Aufgabe 2 "Dasselbe wie in Aufgabe 1 machen, nur sollen alle Ausgabebefehle in einem Unterprogramm zusammengefasst werden".
Ich bin in Sachen Informatik nicht sonderlich bewandert und hab jetzt keine Ahnung was das heißt. 
Wenn mir jemand hierbei helfen könnte wäre ich sehr dankbar.


----------



## Yaslaw (24. April 2020)

Wozu hast du da ein Block drin? Und warum machst du aus allen Deklarationen und zuweisungen 2 Zeilen?
Zudem solltest du sauber formatieren. Ich musste Klammern zählen um heruaszufinden was wo endet.
Ein weiterer Punkt. Allgemeine Namensregeln. Klassennamen beginnen mit einem Grossbuchstaben, Variablen und Methode mit einem Kleinen.
Benenne nie eine Variabe mit "name". Egal welche Sprache, du wirst damit Probleme haben.
Wozu übergibst du bei main() einen Paramter den du nachher nirgends brauchst?

```
public class Aufgabe1 {
  public static void main () {
    String prename = "Soeren";
    String alter = "18";
    String geschlecht = "männlich";
    String groesse = "1.85";
    String gewicht = "72";
    String bmi = "21";
    
    System.out.println("Hallo," + prename + ".");
    System.out.println("Du bist "+ alter +" Jahre alt und bist "+ geschlecht+".");
    System.out.println("Du wiegst "+gewicht+" KG und bist "+groesse+" Meter groß.");
    System.out.println("Das bedeutet, dein BMI liegt bei "+bmi+".");}
  }
```

Zur Aufgabe 2. Keine AHnung was die mit Unterprogramm meinen. Eine Methode? Eine Klasse, welche diese Methode auswertet? Das Zweite würde Sinn ergeben.

Ob das Folgende das gesuchte ist? Ich weiss es nicht

```
public class MyData {
  String prename = "Soeren";
  String alter = "18";
  String geschlecht = "männlich";
  String groesse = "1.85";
  String gewicht = "72";
  String bmi = "21";

  public String getPrename(return prename;)
  public String getAlter(return alter;)
  //TODO: Getter für alle weiteren Eigenschaften definieren
}

public class Aufgabe2 {
  public static void main (MyData myData) {    
    System.out.println("Hallo," + myData.getPrename + ".");
    //TODO: die weiteren Ausgaben erstellen
  }
}
```


----------



## HonniCilest (30. April 2020)

Zuerst einmal zu Aufgabe 1. Ich bin mir unsicher, ob du sie überhaupt schon korrekt gelöst hast. Du hast dort nämlich gar keinen Menschen, sondern einfach nur Strings. Java ist eine objektorientierte Sprache.

Zu Aufgabe 2. Ein Unterprogramm ist nichts anderes als eine Methode. Du brauchst also einen Methodenaufruf.

Insgesamt würde das meiner Meinung nach eher so aussehen:

```
class Mensch {
  private String vorname, alter, geschlecht, groesse, gewicht, bmi;

  public Mensch(String vorname, String alter, String geschlecht, String groesse, String gewicht, String bmi) {
    this.vorname = vorname;
    this.alter = alter;
    this.geschlecht = geschlecht;
    this.groesse = groesse;
    this.gewicht = gewicht;
    this.bmi = bmi;
  }

  public void zeigeDaten() {
    System.out.println("Hallo," + vorname + ".");
    System.out.println("Du bist "+ alter + " Jahre alt und bist " + geschlecht + ".");
    System.out.println("Du wiegst " + gewicht + " KG und bist " + groesse + " Meter groß.");
    System.out.println("Das bedeutet, dein BMI liegt bei " + bmi + ".");
  }

  public static void main(String[] args) {
    Mensch mensch = new Mensch("Soeren", "18", "maenlich", "1.85", "72", "21"); // Aufgabe1
    mensch.zeigeDaten(); // Aufgabe 2
  }
}
```



Yaslaw hat gesagt.:


> Benenne nie eine Variabe mit "name". Egal welche Sprache, du wirst damit Probleme haben.


Bei manchen Sprachen würde ich dir da zustimmen. Bei Java würde ich diese Aussage aber nicht so übers Knie brechen.


----------



## ComFreek (30. April 2020)

HonniCilest hat gesagt.:


> Bei manchen Sprachen würde ich dir da zustimmen. Bei Java würde ich diese Aussage aber nicht so übers Knie brechen.


Ich finde "name" vollkommen legitim, wenn es eben einen Namen repräsentiert. Ich würde da auch nicht näher differenzieren, denn:

*Fun Fact:* es gibt Kulturen, in denen es kein Konzept von Vor- und Nachnamen gibt. Es gibt Kulturen, in denen in den ersten Lebensjahren überhaupt kein Name vergeben wird. Und sowieso kann es sein, dass Rufname != Name


----------

