Methodenaufrufe zählen

T

tanye

Gast
Hey Leutz ;) ,

Hab mal ne Frage : Ich habn Programm geschrieben und möchte es jetzt um folgendes ergänzen ... Im Main-Teil werden Funktionen aufrufen ... Jetzt soll ganz am Ende des Programm noch die Anzahl der Funktionsaufrufe ausgegeben werden ... also errechnet (wahrscheinlich mit einer for schleife ?) und ausgegeben ...
Aber keine Ahnung wie ich da vorgehen muss :noe:
 
T

tanye

Gast
^^ok so weit hätte ich mir das auch denken können ... aber was soll ich zählen ich hab 5 vershiedene funktionen die alle anders heißen ... wonach kann/soll ich counten ?
 

XHelp

Top Contributor
K.a., dafür hast du ja die Aufgabenstellung. Da wird es bestimmt stehen was du zu machen hast...
Aber mal ein anderer Gedankenanstoß: mit einem Counter kannst du die Anzahl der Aufrufe von einer Methode zählen. Wieviele Counter benötigst du um für 5 verschiedene Methoden einzeln die Aufrufe zu zählen?
 
T

tanye

Gast
hmm aber wieso soll ich denn 5 mal nen zähler benutzen ... ist doch iwie umständlich nicht ? kann man denn nicht eine methode schreiben mit einer for schleife die die anzahl der methoden im main teil zählt ? ps: in der aufgabe steht nur folgendes : "erweitern sie ihre funktion so , dass die gesamtzahl der funktionsaufrufe gezählt wird" ...
 

Sekundentakt

Bekanntes Mitglied
Hi,

ist das eine Hausaufgabe, oder geht's Dir um was Praktisches?
Für die Praxis würde ich an Deiner Stelle einen Logger nutzen, der innerhalb der Methode mitloggt, wenn diese aufgerufen wird.
Etwas generisches, sprich automatisches gibt's aber nicht.

Es sei denn Du hast etwas so banales wie

Java:
for(int i = 0; i < x; i++)
{
   myObj.doSomething();
}

//oder

while(myObj.isSomethingTrue())
{
  myObj.doSomething();
}

In so einem Fall kannst Du mit einem simplen Zähler arbeiten.

Grüße
 

Landei

Top Contributor
Java:
public class Foo {
   private int counterBar = 0;
   private static int counterBaz = 0;
 
   public void bar(String s) {
       counterBar++;
       ...   
   }

   public static double baz(int k, String s) {
       counterBaz++;
       ...   
   }

}

Ist dir das zu "umständlich"? Das Problem "allgemein" zu lösen (ohne die Methoden ändern zu müssen) ist ohne AOP nicht ganz einfach. Man könnte sicher was mit DynamicProxy zusammenschrauben, aber ich glaube nicht dass dein Leerkörper sowas sehen will...
 
T

tanye

Gast
Hi,

ist das eine Hausaufgabe, oder geht's Dir um was Praktisches?
Für die Praxis würde ich an Deiner Stelle einen Logger nutzen, der innerhalb der Methode mitloggt, wenn diese aufgerufen wird.
Etwas generisches, sprich automatisches gibt's aber nicht.

Es sei denn Du hast etwas so banales wie

Java:
for(int i = 0; i < x; i++)
{
   myObj.doSomething();
}

//oder

while(myObj.isSomethingTrue())
{
  myObj.doSomething();
}

In so einem Fall kannst Du mit einem simplen Zähler arbeiten.

Grüße

Also wenn ich dass so mit der for Schleife mache kommt immer was raus ... immer das gleiche aber leider immer was falsches ^^Weil ansich gibt es 5 Eingaben die der User tätigen muss für 3 Methoden , aber es sind eben nur 3 Methoden ... und IN der Schleife steht dann doch nur 1 Methode drin ... also müsste da doch nur 1 rauskommen ... ps: is ne HA
 
T

tanye

Gast
Java:
import javax.swing.JOptionPane;

public class teiler {

	public static void main (String[] args){
	
//** Eingabe der Integer a & b 		
	System.out.println("Berechnung der größten gemeinsamen Teilers zwischen a und b : ");
	String s = JOptionPane.showInputDialog("Gib a ein:");
	int a = Integer.parseInt(s);
	System.out.println("a Saved");
	
	String t = JOptionPane.showInputDialog("Geb b ein:");
	int b = Integer.parseInt(t);
	System.out.println("b Saved");
//*
	
	 
//** Ausgabe des Ergebnisses	
	System.out.println("Der größte gemeinsame Teiler zwischen a und b ist :" + ggT(a, b) ) ;
//*		

//** Eingabe von n für Fibonacci	
	System.out.println("Berechnung der n-ten Fibonacci Zahl : ");
	String u = JOptionPane.showInputDialog("Gebe n ein : ");
	int n = Integer.parseInt(u);
//*
	System.out.println ( "Die"+" "+n+". Fibonacci-Zahl ist :" + fibonacci(n));
	
//** Eingabe von a1 und b1 für die Ackermann Funktion : 
	System.out.println("Berechnung der Ackermann Funktion : ");
	String v = JOptionPane.showInputDialog("Gebe a1 ein : ");
	int a1 = Integer.parseInt(v);
	System.out.println("a1 Saved");
	
	String w = JOptionPane.showInputDialog("Gebe b1 ein :");
	int b1 = Integer.parseInt(w);
	System.out.println("b1 Saved");
//*

//** Ausgabe des Ackermann Wertes 
	System.out.println("Der entsprechende Ackermann Wert ist : " + ack (a1,b1) );
//*
	System.out.println("Anzahl der Funktionsaufrufe : " );

	                                                
	
	}
	
//** Berechnung des größten gemeinsamen Teilers :
	public static int ggT(int a ,int b){		
	if ( b == 0 ) {
         		return a ;
	               }   
	else    {
		        return ggT ( b , a%b) ;
	         }
	                                    }
//*
	
//** Berechnung der n-ten Fibonacci Zahl :	
public static int fibonacci (int n) {	

	if(n<2){		
		return n;
	       }
	else  {		
	return (fibonacci(n-1) + fibonacci(n-2));	
	      }

                                   }
//*

//** Berechnung der Ackermann Funktion : 
public static int ack (int a1 , int b1){	
	if(a1==0){
		return ( b1+ 1);
	}
	if(b1==0){
		return ( ack (a1-1,1) );
	}
	else return ( ack ((a1-1) , ack (a1,b1-1) ));
                                        }

	 
	}
 

XHelp

Top Contributor
Und wo ist da die Schleife? :autsch:
Aber es ist ziemlich offensichtlich, dass du es wie von mir im 6. Post gesagt und von Landei im 9. Post gezeigt machen musst.
 
T

tanye

Gast
Und wo ist da die Schleife? :autsch:
Aber es ist ziemlich offensichtlich, dass du es wie von mir im 6. Post gesagt und von Landei im 9. Post gezeigt machen musst.

Ich würde deine Variante gerne mal probieren ... aber was meinst du mit "in der methode den zähler hochsetzen" ? bei zählern denke ich direkt an for schleifen aber die brauch ich nicht sagst du ja ... sorry aber tu mich grad was schwer damit -.-
 

WIaimy

Mitglied
du erstellst dir ne Klassenvariable
Java:
static int ichZaehleDieMethodenaufrufe

und jetzt ergänst du einfach in jeder Methode am Anfang oder Ende
Java:
ichZaehleDieMethodenaufrufe++;
und zum Schluss in deine Main-Methode schreibst du rein:
Java:
System.out.println("Aufrufe: " +  ichZaehleDieMethodenaufrufe);
 
Zuletzt bearbeitet:
T

tanye

Gast
du erstellst dir ne Klassenvariable
Java:
int ichZaehleDieMethodenaufrufe

und jetzt ergänst du einfach in jeder Methode am Anfang oder Ende
Java:
ichZaehleDieMethodenaufrufe++;
und zum Schluss in deine Main-Methode schreibst du rein:
Java:
System.out.println("Aufrufe: " +  ichZaehleDieMethodenaufrufe);

hab ich getan ... wär auch super gewesen wenn das geklappt hätte ... aber ich krieg iwas mit 42000 raus ^^ wenn ich den zähler nur in eine funktion reinstelle kommt 2 raus ... bei 2 , 27 ...
 

XHelp

Top Contributor
hab ich getan ... wär auch super gewesen wenn das geklappt hätte ... aber ich krieg iwas mit 42000 raus ^^

Und warum soll es falsch sein? Du berechnest ja auch die Ackermannfunktion... Außerdem ist deine Aussage ziemlich bedeutungslos, da hier die Parameter fehlen.
Ich bin mir aber ziemlich sicher, dass du jede Methode für sich zählen musst, sonst ist das ganze ja ziemlich sinnlos.
 
A

asdasdjk

Gast
Hochzählen kannst du entweder in dem Programmabschnitt, der den Methodenaufruf enthält, oder im Rumpf der Methode. Bei rekursiven Methoden muss es in der Methode sein.
Wenn dein Programm multi-thread ist, muss der Zugriff auf die Hilfsvariable synchronisiert werden, aber das ist es ja nicht.
Java:
public static void main(String[] args) {

zaehler = 0;

for (;;) {
 aufruf();
 zaehler++;
}

aufruf();
zaehler++;

System.out.println("zaehler: " + zaehler);

oder so
Java:
private static int zaehler = 0;

public void aufruf() {
 zaehler++;
 usw.
 

XHelp

Top Contributor
@asdasdjk, was glaubst du, wann das Programm aus einer
Code:
for(;;)
-Schleife springen wird?
 
A

asdasdjk

Gast
@asdasdjk, was glaubst du, wann das Programm aus einer
Code:
for(;;)
-Schleife springen wird?

keine ahnung, er wird es ja dann eh annpassen - und der computer wird nicht schmilzen :D

er könnte auch einen paramter nehmen und hochzählen lassen, das muss dann aber via einem objekt geschehen, auf dem methoden aufgerufen werden. das wär'n dann wohl alle möglichkeiten.
 
T

tanye

Gast
Und warum soll es falsch sein? Du berechnest ja auch die Ackermannfunktion... Außerdem ist deine Aussage ziemlich bedeutungslos, da hier die Parameter fehlen.
Ich bin mir aber ziemlich sicher, dass du jede Methode für sich zählen musst, sonst ist das ganze ja ziemlich sinnlos.

Ach ... klar ... Ok dann ergibts Sinn :D Stimmt dass kann natürlich sein ich schreibs um für jede Methode nen eigenen Zähler ;)
 

WIaimy

Mitglied
Ich hab bei meiner Variable das static vergessen, keine Ahnung ob das etwas ändert aber probier es damit nochmal aus (hab es oben geändert).
War schon spät ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Java Methodenaufrufe zählen Java Basics - Anfänger-Themen 4
E Methoden Methodenaufrufe zählen Java Basics - Anfänger-Themen 11
J Methodenaufrufe abstrakte Klassen, Interfaces Java Basics - Anfänger-Themen 17
B Zuweisungen und Methodenaufrufe in Bedingung der while Schleife? Java Basics - Anfänger-Themen 2
M Methodenaufrufe im Konstruktoren Java Basics - Anfänger-Themen 31
M Lange Methodenaufrufe == suboptimales Klassendesign? Java Basics - Anfänger-Themen 5
D Wie baue ich sinnvoll eine Klasse, genauer die Methodenaufrufe auf? Java Basics - Anfänger-Themen 4
D Interfaces und allgemeingültige Methodenaufrufe Java Basics - Anfänger-Themen 6
A Methodenaufrufe von Anonymen Klassen Java Basics - Anfänger-Themen 6
Kenan89 Methodenaufrufe verketten Java Basics - Anfänger-Themen 16
H Methodenaufrufe protokollieren Java Basics - Anfänger-Themen 7
R Methodenaufrufe Java Basics - Anfänger-Themen 15
L Methodenaufrufe Protokollieren Java Basics - Anfänger-Themen 5
G Methodenaufrufe funktionieren nicht Java Basics - Anfänger-Themen 2
L Reihenfolge der Methodenaufrufe Java Basics - Anfänger-Themen 6
T Wörteranzahl im Array zählen Java Basics - Anfänger-Themen 9
M Häufigkeit von Wörtern zählen Java Basics - Anfänger-Themen 6
Cassy3 Binäre Bäume Rekursiv durchlaufen und bestimmte Elemente Zählen Java Basics - Anfänger-Themen 6
D spezifische Knoten in einem Baum zählen Java Basics - Anfänger-Themen 9
F Werte in einer Arraylist Zählen Java Basics - Anfänger-Themen 2
P Doppelte werte in einer Liste zählen Java Basics - Anfänger-Themen 11
S Methoden Methodenaufruf rekursiv zählen Java Basics - Anfänger-Themen 4
J Methoden Positive Werte zählen Java Basics - Anfänger-Themen 3
H Buchstaben zählen Java Basics - Anfänger-Themen 9
Poppigescorn Häufigkeit einer zahl zählen Java Basics - Anfänger-Themen 5
HighLife Bestimmte Werte aus Array zählen Java Basics - Anfänger-Themen 15
O Attribute die Methoden zählen Java Basics - Anfänger-Themen 5
X Game of Life Nachbarn zählen Java Basics - Anfänger-Themen 20
F Java Programm, das kleine Buchstaben in einem String zählen soll und bei großen Buchstaben oder Sonderzeichen abbrechen soll. Java Basics - Anfänger-Themen 5
Z Satz aufteilen und die Wörter zählen (HashMap) Java Basics - Anfänger-Themen 15
S Binärbäume knoten zählen Java Basics - Anfänger-Themen 16
K Counts zählen Java Basics - Anfänger-Themen 23
Kirby.exe Anzahl vorkommender Elemente im Array zählen Java Basics - Anfänger-Themen 9
J Zeichen im String zählen Java Basics - Anfänger-Themen 3
G Binärer Suchbaum Knoten zählen Java Basics - Anfänger-Themen 1
N Zeichen in einem Textfeld zählen und hinterlegen Java Basics - Anfänger-Themen 6
E Knoten eines Baumes unter Bedinung zählen Java Basics - Anfänger-Themen 2
T x Schritte zählen Java Basics - Anfänger-Themen 18
P Schlüsselworte Zählen und Zuweisen von eingelesenen Zahlen Java Basics - Anfänger-Themen 1
A In einem String alle Eigennamen zählen Java Basics - Anfänger-Themen 6
L Baum Knoten zählen Java Basics - Anfänger-Themen 6
B Objekte zählen/ Vererbung/ Kopplung/ Interface/ Abstract Class Java Basics - Anfänger-Themen 5
S Zählen der Zeiger auf Objekte Java Basics - Anfänger-Themen 35
S Zeichen zählen kopierter Text Java Basics - Anfänger-Themen 6
B Array - die Häufigkeit der Zahl zählen Java Basics - Anfänger-Themen 9
L Vorherige Objekte zählen und ausgeben Java Basics - Anfänger-Themen 11
L Diphthonge zählen... Java Basics - Anfänger-Themen 5
O ELOPS Zählen Java Basics - Anfänger-Themen 1
S Rekursives Zählen einer Zahl Java Basics - Anfänger-Themen 8
X Quick Sort - Vergleichsoperationen zählen Java Basics - Anfänger-Themen 0
K alle Vorkommen einer bestimmten Ziffer in einer Zahl zählen Java Basics - Anfänger-Themen 2
B Collections Java Wörter in String zählen und geordnet ausgeben Java Basics - Anfänger-Themen 10
O Großbuchstaben im Satz zählen Java Basics - Anfänger-Themen 6
S zahl hoch und runter zählen per button Java Basics - Anfänger-Themen 25
N Zählen von Rationalen Werten eines Arrays Java Basics - Anfänger-Themen 10
Y for-Schleife zählen Java Basics - Anfänger-Themen 6
K Probleme mit Sortieren und dem Zählen Java Basics - Anfänger-Themen 13
S Vererbung Objekte von Ober - und Unterklassen zählen Java Basics - Anfänger-Themen 3
F SubString in String zählen Java Basics - Anfänger-Themen 3
C Im Array zählen und verändern Java Basics - Anfänger-Themen 5
O Zählen der while-Scheife Java Basics - Anfänger-Themen 3
P bytes aus einem InputStream zählen Java Basics - Anfänger-Themen 2
A Text teilen und Wörter zählen Java Basics - Anfänger-Themen 7
G Erste Schritte Einen Array absuchen und Buchstaben zählen Java Basics - Anfänger-Themen 17
F Problem mit Tabulatoren bei Zeilen zählen einer Textdatei Java Basics - Anfänger-Themen 17
F Textdatei einlesen und Zeilen zählen Java Basics - Anfänger-Themen 10
D Groß/KleinBuchstaben zählen Java Basics - Anfänger-Themen 21
D Buchstabe zählen/mappen Java Basics - Anfänger-Themen 3
S Anzahl unterschiedlicher Elemente zählen Java Basics - Anfänger-Themen 4
M Hilfe bei Zählen von Farben? Java Basics - Anfänger-Themen 7
R Input/Output Tastenschläge einer Taste zählen Java Basics - Anfänger-Themen 14
J Schleifendurchläufe zählen Java Basics - Anfänger-Themen 4
B Zweidimensionales Array Elemente jeder Spalte zählen Java Basics - Anfänger-Themen 9
T Leerzeichen zählen mit Rekursion Java Basics - Anfänger-Themen 17
H Programm zum Zählen von Zeichen Java Basics - Anfänger-Themen 5
K Kommandozeile zählen Java Basics - Anfänger-Themen 5
J Bits zusammen zählen Java Basics - Anfänger-Themen 4
P Hashtabelle-Häufigkeit von String zählen Java Basics - Anfänger-Themen 2
J Array; Vorkommen zählen Java Basics - Anfänger-Themen 10
T durchlaufene while-Schleifen zählen Java Basics - Anfänger-Themen 3
P Replace zählen Java Basics - Anfänger-Themen 4
A Methoden Gedanken Anstöße zur Realisierung zweier Ideen (Grafisch Sekunden zählen und Frameaufteilung) Java Basics - Anfänger-Themen 18
E Zeichen von Kommandozeilenparameter zählen Java Basics - Anfänger-Themen 6
L Objekte zählen mehrerer Unterklassen Java Basics - Anfänger-Themen 3
J Buchstaben aus String einzeln Zählen Java Basics - Anfänger-Themen 12
J Enum zählen Java Basics - Anfänger-Themen 8
M Automatisch hoch zählen Java Basics - Anfänger-Themen 8
S Zählen Java Basics - Anfänger-Themen 9
V Arraylist: Zählen welcher String am Häufigsten vorkommt Java Basics - Anfänger-Themen 5
A Erste Schritte Datei einlesen und Buchstaben zählen Java Basics - Anfänger-Themen 13
M Von File lesen Buchstaben lesen und zählen - scheitert an der Eingabe Java Basics - Anfänger-Themen 4
B Zählen bestimmter Zeilen einer .txt Java Basics - Anfänger-Themen 7
A Satzeingabe - Vokale zählen Java Basics - Anfänger-Themen 5
G Gleiche Elemente in Feld zählen Java Basics - Anfänger-Themen 13
B Input/Output Wörter zählen & sortieren Java Basics - Anfänger-Themen 9
S Buchstaben/Wörter im String zählen Java Basics - Anfänger-Themen 6
K apache poi - Spalten zählen Java Basics - Anfänger-Themen 4
L Array Sequent Zählen Java Basics - Anfänger-Themen 8
N Bestimmte Zeichen aus Strings zählen Java Basics - Anfänger-Themen 11
C Boolean Wahrheitswert zählen Java Basics - Anfänger-Themen 15

Ähnliche Java Themen

Neue Themen


Oben