Grußkarte

latrellvie

Mitglied
Hallo liebe Leute, ich weiß, dass der Code unten noch einige Fehler hat, die ich selbst noch ausbessern werde. Mich interresiert nur warum in Zeile 87 "21" nicht als String angenommen wird. Ich könnte natürlich das definierte < Geschlecht> benutzen, aber ich mich interessierts trotzdem. Die anderen Fehler bitte nicht aufzeigen, möcht noch üben :=) Danke


Java:
import java.util.Scanner;

abstract class Karte
{
  String empfaenger,anrede;
  
  public Karte (String empfaengerX ,String sex )
  {
  	empfaenger = empfaengerX ;
  	anrede = sex ;
  	String m = "" ;
  	if ( anrede == m)
  	 anrede =  "Lieber";
  	else
  	 anrede = "Liebe";
  }
  public abstract void gruss();
}

class Feiertag extends Karte
{
  public Feiertag( String e , String anr  )
  {
    super(e,anr);
  }

  public void gruss()
  {
    System.out.println("Dear " + empfaenger + ",\n");
    System.out.println("frohe Feiertage!\n\n");
  }
}

class Geburtstag extends Karte
{
  int alter;

  public Geburtstag ( String e,String anr, int jahre )
  {
    super(e,anr);
    alter = jahre;
  }

  public void gruss()
  {
    System.out.println("Dear " + empfaenger + ",\n");
    System.out.println("alles Gute zum " + alter + ". Geburtstag.\n\n");
  }
}

class Valentin extends Karte
{
  int kuesse;

  public Valentin ( String e,String anr, int k )
  {
    super(e,anr);
    kuesse     = k;
  }

  public void gruss()
  {
    System.out.println("Dear " + empfaenger + ",\n");
    System.out.println("herzliche Gruesse und Kuesse,\n");
    for ( int j = 0; j < kuesse; j++ )
      System.out.print("X");
    System.out.println("\n\n");
  }
}

public class ZHU_Kap51_Auf1
{
  public static void main ( String[] args )
  {
    String name,geschlecht;
    Scanner scan = new Scanner( System.in );

    System.out.println("Ihr Name");
    name = scan.nextLine();
    
    System.out.println("Ihr Geschlecht ? <m> oder <w> ");
    geschlecht = scan.nextLine();

    Feiertag   feiern = new Feiertag( name,geschlecht );
    feiern.gruss();

    Geburtstag  geb  = new Geburtstag( name, "21" );
    geb.gruss();

    Valentin val = new Valentin( name, 7 );
    val.gruss();

  }
}
 
Zuletzt bearbeitet von einem Moderator:

Fab1

Top Contributor
Der Konstruktor von Geburtstag erwartet nun mal String, String, int und nicht zur zwei Parameter, wie bei dir.
 

latrellvie

Mitglied
Danke , aber wenn ich:

Geburtstag geb = new Geburtstag( name,geschlecht,39 );

eingebe funkt. auch und 21 ist ja auch ein direkter int wert also warum kann ich nicht diekt einen String eingeben also,

Geburtstag geb = new Geburtstag( name,"21", 39)

ist ja so wie String geschlecht = "21" ; oder hat das was mit der Superklasse zu tun ?

große Danke !!!!!
 

Camill

Bekanntes Mitglied
Schau dir nochmal genau an was du in deinem geposteten Code geschrieben hast - der dritte Parameter(int) fehlt dort.
[c]Geburtstag geb = new Geburtstag( name,"21", 39);[[/c] ist natürlich möglich.
 

latrellvie

Mitglied
Java:
import java.util.Scanner; // bereits in ZHU_Kap51_Auf1 richtig geklärt,dies ist zum üben

abstract class Karte
{
  String empfaenger;
  String anrede;
  
  public Karte (String empfaengerX ,String sex )
  {
  	empfaenger = empfaengerX ;
  	anrede = sex ;
  	if ( anrede.equals("m") )
  	 anrede =  "Lieber";
  	else
  	 anrede = "Liebe";
  }
  public abstract void gruss();
}

class Feiertag extends Karte
{
  public Feiertag( String e , String anr  )
  {
    super(e,anr);
  }

  public void gruss()
  {
    System.out.println(anrede +" "+ empfaenger + ",\n");
    System.out.println("frohe Feiertage!\n\n");
  }
}

class Geburtstag extends Karte
{
  int alter;

  public Geburtstag ( String e,String anr, int jahre )
  {
    super(e,anr);
    alter = jahre;
  }

  public void gruss()
  {
    System.out.println(anrede +" "+ empfaenger + ",\n");
    System.out.println("alles Gute zum " + alter + ". Geburtstag.\n\n");
  }
}

class Valentin extends Karte
{
  int kuesse;

  public Valentin ( String e,String anr, int k )
  {
    super(e,anr);
    kuesse     = k;
  }

  public void gruss()
  {
    System.out.println(anrede +" "+ empfaenger + ",\n");
    System.out.println("herzliche Gruesse und Kuesse,\n");
    for ( int j = 0; j < kuesse; j++ )
      System.out.print("X");
    System.out.println("\n\n");
  }
}

public class ZHU_Kap51_Auf1_1
{
  public static void main ( String[] args )
  {
    String name,geschlecht;
    Scanner scan = new Scanner( System.in );

    System.out.println("Ihr Name");
    name = scan.nextLine();
    
    System.out.println("Ihr Geschlecht ? <m> oder <w> ");
    geschlecht = scan.nextLine();

    Feiertag   feiern = new Feiertag( name,geschlecht );
    feiern.gruss();

    Geburtstag  geb  = new Geburtstag( name,"m",21 );// hier wird "m" statt geschlecht übernommen
    geb.gruss();

    Valentin val = new Valentin( name,geschlecht, 7 );
    val.gruss();

  }
}
Dies hab ich gemeint und natürlich übernimmt er jetzt "m" in Zeile 8chten Zeile vorm Ende ( Geburtstag geb= new Geburtstag ....
 

MarderFahrer

Gesperrter Benutzer
Und wo ist jetzt noch das Problem? Der Code macht doch jetzt genau das, was er machen soll.

Code:
Ihr Name
Ihr Geschlecht ? <m> oder <w> 
Lieber John,

frohe Feiertage!


Lieber John,

alles Gute zum 21. Geburtstag.


Lieber John,

herzliche Gruesse und Kuesse,

XXXXXXX

Ist doch alles richtig.
 

Neue Themen


Oben