methodenüberladung, nachkommstellen, varargs

drwood187

Mitglied
Hi,

ich würde gerne eine überladene Methode erstellen, die von einem gegebenen Double- Wert, eine bestimmte Anzahl (variabler int-Wert) von Nachkommastellen (NKS) erhält - die restlichen also abschneidet. Dann soll ein formatierter String ausgegeben werden, z.B. aus den Parametern (5.4444444,3) den String '544,444%' macht.

Die zweite Methode kommt ohne variable Nachkommastellen aus und soll standardmäßig 2 NKS ausweisen. Sie kommt zum Einsatz, falls nur ein Double-Wert angeben wird, soll aber Methode 1 in sinnvoller Weise benutzen.

Die dritte Methode soll mithilfe von 'Varargs' die Eingabe verschiedener Double-Werte ermöglichen. Auch hier soll ein Int-Wert, der die Anzahl der NKS beschreibt, berücksichtigt werden. Auch sie soll Methode 1 in sinnvoller Weise nutzen.

Hier mein Versuch:
Java:
public class PrintTools {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
//		 double zahl1 = IOTools.readDouble ("wert?");
//		 int zahl2 = IOTools.readInteger("wieviele nachkommastellen?");
		 System.out.println(alsProzent(5,2)+ "%");

	}

	
	public static String alsProzent(double zahl1, int zahl2) {

		zahl2 = zahl2 + 2;
		double zahl4 = Math.pow(10, zahl2);
		zahl1 = Math.round( zahl1 * zahl4  ) / zahl4;
		zahl1 = zahl1 *100;
 
		String zahl11 = Double.toString(zahl1);
		zahl11 = zahl11.replace('.', 'x');
		return zahl11;
	}

				

		
	public static String alsProzent(double zahl1) {
		alsProzent(zahl1, 2);
		
 		String zahl11 = Double.toString(zahl1);
		zahl11 = zahl11.replace('.', 'y');
		return zahl11;
		
	}

	
	
	public static String alsProzent(int zahl2, double ... zahl1Werte) {
		
		for (double x : zahl1Werte)
			alsProzent(x, zahl2);
			return zahl11;
		
		String zahl11 = Double.toString(zahl5);
		zahl11 = zahl11.replace('.', 'y');
		return zahl11;;
	}
			
}

zu Methode 1: funktioniert, er gibt mir aber bei einem Int-Wert von 4 mehr NKS aus. Bei allen anderen Werten funktioniert es. (?) Bei einem ganzzahligen Wert wird eine NKS mit Null belegt, ich hätte lieber zwei NKS.

zu Methode 2: gibt die Werte nicht richtig aus. /z.B wird aus 5 gleich 5,0% und nicht 500,00% obwohl ja die Methode 1 benutzt wird. Ist mir unverständlich.

zu Methode 3: funktioniert überhaupt nicht, ich weiß nicht, wie ich die einzelenen varargs ansprechen soll...


Würde mich freuen, falls mir jemand helfen kann.

Thx DrWood
 

drwood187

Mitglied
Danke für deine Antwort. Habe mir diese Klasse schon angesehen, bin aber unschlüssig, wie ich mit dieser die Nachkommastellen als Variable behandeln kann. Sehe nur Möglichkeiten VORHER die Anzahl der Nachkommastellen (min/max) zu bestimmen.

Kann ich mit dieser Klasse eine Zahl auf n Nachkommastellen reduzieren und diese danach in eine Prozentzahl umwandeln. Wichtig ist hierbei, dass n hierbei als Variable übergeben wird.

Falls dies möglich sein sollte, bitte ich um ein Code-Beispiel.

Servus DrWood
 

Harry Kane

Top Contributor
Deine Klasse ist nicht kompillierbar. In deiner alsProzent methode mit den varargs wird zahl11 zurückgegeben, bevor sie deklariert wurde. Ausserdem ist alles, was danach steht, unreachable statements.
Was mir ausserdem aufgefallen ist: In deiner alsProzent Methode mit einem einzelnen double Argument rufst du zwar alsProzent(int, double) auf, verwendest du den von dieser methode zurückgegebenen Wert aber gar nicht. Stattdessem wandelst du das übergebene double-Argument direkt in einen String um und ersetzt dann aus irgendeinem Grund "." durch "y".
Aufgrund der o.g. Fehler wundert es mich, woher du überhaupt Ausgaben bekommst.
 

Joose

Top Contributor
bin aber unschlüssig, wie ich mit dieser die Nachkommastellen als Variable behandeln kann

Klar, du liest ein wieviele Nachkommstellen es geben soll.
Mit diesem Wert erstellst du dynamisch dein gewünschtes Format (Variable ist in diesem Fall nur die Anzahl der Nachkommastellen).
Und mit dem gewünschten Format formatierst du dann deine Zahl X.

Kann ich mit dieser Klasse eine Zahl auf n Nachkommastellen reduzieren und diese danach in eine Prozentzahl umwandeln.

Nein du musst dir den FormatString selbst zusammenbauen und mit diesem dann die Zahl formatieren.
 

Ähnliche Java Themen

Neue Themen


Oben