Non static method Problem

Original geschrieben von Christian Fein
nein nur weshalb den Construktor falsch missbrauchen. Schau mal oben da habe ich ein Beispiel gegeben.

Das ganze gehört in eine Methode rein.
z.b run()

new Application().run();
ist auch nicht viel mehr zu schreiben als
new Application();

OK, einverstanden. :)
 
Original geschrieben von Christian Fein
Ablaufsteuerung hat im Konstruktor nichts zu suchen, der ist nur für initialisierung da.

Stimme vollkommen zu, wichtig war mir nur die Ablaufsteuerung aus der main in die Klasse auszulagern. Wobei man vielleicht einen anderen Namen als run() wählen sollte, da dieser schon in Thread verwendet wird. Ein sprechender Name wie z.B. manageOrders() wäre da passender.

Grüsse TrueSun
 
Zuletzt bearbeitet:
Original geschrieben von TrueSun
Stimme vollkommen zu, wichtig war mir nur die Ablaufsteuerung aus der main in die Klasse auszulagern. Wobei man vielleicht einen anderen Namen als run() wählen sollte, da dieser schon in Thread verwendet wird. Ein sprechender Name wie z.B. manageOrders() wäre da passender.

Grüsse TrueSun

Ein Thread wird angestossen seine Logic abzuarbeiten, genauso wie eine Application
angestossen wird seine Logic abzulaufen.
Kann aber möglich sein das jemand das jemand da einen Thread erwartet wo keiner ist.
Einigen wir uns auf execute() ;o)
 
Hallo,

doch so einfach ?
Wenn ich das richtig verstanden habe, dann sollte das so gehen

// Ende der Main Methode

int menue =0;
switch(menue){

case 1:{ berechneEinnahmen();
}//Case geschlossen
break;

case 2: { erhoeheRabatt();}
break;
case 3: { print();
}//case 3 geschlossen
break;
case 4: { info();
}//case geschlossen
break;

default: {
//System.out.println("Ihre Eingabe entspricht nicht den vorgegebenen Menuepunkten.");
//System.out.println("Bitte versuchen Sie es erneut:");

}//default geschlosssen
}//Switch Anweisung geschlossen

//Werde das mal versuchen!
 
Moin,

leider hat es das noch nicht wirklich gebracht, die Menü-Steuerung ausserhalb der main Methode zu definieren:

Fehlermeldung: illegal start of Type

und bei den Methode : identifizierer expected.....

---------------------------------------------------------

Habe jetzt schon eine Menge versucht.
Die main Methode sollte nach Möglichkeit schon in der Klasse verweilen.

Die Variablen als static auszugeben kann auch nicht die Kösung sein, zumal ich
dann die Konstruktor Klasse total umschreiben müsste.

Gibt es da vielleicht noch eine andere Möglichkeit oder konnte ich euch nicht
wirklich folgen
 
Hab bisher einfach nur die switch Anweisung aus der main Methode herausgenommen.



public class Auftragsverwaltung {

//Auftragsobjekte werden erzeugt
Auftrag auftrag1 = new Auftrag (111l,"Thorsten Petersen", 12, 45,true, 4856, 5.0f);
Auftrag auftrag2 = new Auftrag (112l,"Juergen Juergensen", 19, 24, false, 2900, 20.0f);
Auftrag auftrag3 = new Auftrag (113l,"Thorsten Petersen", 29, 52,true, 10000, 10.0f);


//Methoden

public double berechneEinnahmen(){

return(auftrag1.berechnePreis() + auftrag2.berechnePreis() +auftrag3.berechnePreis());

}//Methode geschlossen

//--------------------------------------------
public void erhoeheRabatt( double prozent){


java.io.BufferedReader in =
new java.io.BufferedReader(
new java.io.InputStreamReader(System.in));
/* Eingabestrom aus der Standardeingabe */

prozent= Double.parseDouble(in.readLine());

auftrag1.setRabatt(auftrag1.getRabatt + prozent);
auftrag2.setRabatt(auftrag2.getRabatt + prozent);
auftrag3.setRabatt(auftrag2.getRabatt + prozent);



}//Methode erheoheRabatt geschlossen

public void print(){
System.out.println("Hier sind alle Auftraege im Ueberblick:");
auftrag1.print();
auftrag2.print();
auftrag3.print();
}//print beendet


public void info(){

int auftrag =0;
if (auftrag == auftrag1.getAuftragsnummer())
auftrag1.print();
else
if (auftrag == auftrag2.getAuftragsnummer())
auftrag2.print();
else
if (auftrag == auftrag1.getAuftragsnummer())
auftrag3.print();
}//void Methode geschlossen



//main Methode
public static void main(String args[]) throws java.io.IOException
{

//Variablen werden deklariert
int menue = 0;


//F¸r die Standardeingabe
java.io.BufferedReader in =
new java.io.BufferedReader(
new java.io.InputStreamReader(System.in));
/* Eingabestrom aus der Standardeingabe */


//Bildschirmausgabe

System.out.println(" Menue der Auftragsverwaltung ");
System.out.println("--------------------------------");
System.out.println("Bitte waehlen Sie einen Menuepunkt:");
System.out.println("1. Ausgabe aller bisherigen Einnahmen (1):");
System.out.println("2. Rabatte fuer alle Auftraege erhoehen (2):");
System.out.println("3. Alle Auftraege drucken ( 3):");
System.out.println("4. Auftragsdaten ueber Auftr.nummer ausgeben (4):");
System.out.println("---------------------------------------------------");
System.out.println("");
System.out.print("Bitte geben Sie Ihren Menuewunsch ein:");

menue= Integer.parseInt(in.readLine());


}//main Methode geschlossen


//Schleife wird erstellt


switch(menue){

case 1:{ berechneEinnahmen();
}//Case geschlossen
break;

case 2: { erhoeheRabatt();}
break;
case 3: { print();
}//case 3 geschlossen
break;
case 4: { info();
}//case geschlossen
break;

default: {
//System.out.println("Ihre Eingabe entspricht nicht den vorgegebenen Menuepunkten.");
//System.out.println("Bitte versuchen Sie es erneut:");

}//default geschlosssen
}//Switch Anweisung geschlossen



}//Klasse geschlossen
 
Tach,
wo auch immer Du den switch-Block unterbringen möchtest, ändere zunächst einmal die main-Methode hierin:

Code:
//main Methode
  public static void main( String args[] ) throws java.io.IOException
  {
    new Auftragsverwaltung().doIt();
  } //main Methode geschlossen

und die doIt enthält dann zunächst einmal das hier:

Code:
  private void doIt()
  {
//Variablen werden deklariert
  int menue = 0;

//F¸r die Standardeingabe
    java.io.BufferedReader in =
        new java.io.BufferedReader(
        new java.io.InputStreamReader( System.in ) );
    /* Eingabestrom aus der Standardeingabe */


//Bildschirmausgabe

    System.out.println( " Menue der Auftragsverwaltung " );
    System.out.println( "--------------------------------" );
    System.out.println( "Bitte waehlen Sie einen Menuepunkt:" );
    System.out.println( "1. Ausgabe aller bisherigen Einnahmen (1):" );
    System.out.println( "2. Rabatte fuer alle Auftraege erhoehen (2):" );
    System.out.println( "3. Alle Auftraege drucken ( 3):" );
    System.out.println( "4. Auftragsdaten ueber Auftr.nummer ausgeben (4):" );
    System.out.println( "---------------------------------------------------" );
    System.out.println( "" );
    System.out.print( "Bitte geben Sie Ihren Menuewunsch ein:" );

    menue = Integer.parseInt( in.readLine() );
    switch ( menue )
    {

      case 1:
      {
        berechneEinnahmen();
      } //Case geschlossen
      break;

      case 2:
      {
        erhoeheRabatt();
      }
      break;
      case 3:
      {
        print();
      } //case 3 geschlossen
      break;
      case 4:
      {
        info();
      } //case geschlossen
      break;

      default:
      {
//System.out.println("Ihre Eingabe entspricht nicht den vorgegebenen Menuepunkten.");
//System.out.println("Bitte versuchen Sie es erneut:");

      } //default geschlosssen
    } //Switch Anweisung geschlossen
  }
 
Zurück