funktionen mit variabler argumentenzahl
-
hi noch ne kleine frage...
unter c habe ich schon oft ellipsen funktionen geschrieben nun brauche ich so etwas auch in java also ich mochte folgenden C-code in java haben
int methodenName(int x, int y, ...);
wie geht das?
geht das in java ueberhaupt?
kennt jemand ein gutes tut darueber?
-
ab 1.5 geht das:
int methodenName(String str, int ... foo){ //foo ist dann ein Int-Array. ... int x = methodenName("wozu brauch man das", 1, 4, 3, 7, 34); }
-
ist es auch moeglich das ganze flexibel zu gestalten? dass der parametertuep nicht festgelegt wird? also eher in die richtung:
int methodenName(String str, int ... fooInt, char ... fooChar, String ... fooString){ /*hier kommt nocht code*/ }/*end ellipsenmethode*/
-
So wie du es hingeschrieben hast, sollte es gehen, warum probierst du es nicht gleich selber aus. Falls du das so auch nicht festlegen willst, können deine Parameter können halt noch Object sein. Wie flexibel stellst du dir das vor? In C wären das ja lauter void* als Parameter, was bezweckst du denn damit?
-
was bezweckst du denn damit?
Ich glaube er möchte ein zweites printf() wie in C haben. Oder jedenfalls eine funktion mit ähnlichen Fähigkeiten.
Aber wenn ich mich nicht irre gibt es doch ab Java 5 eine printf()-Funktion mit der selben funktionsweise wie printf in C.
-
@KaraHead GENAU DAS WILL ICH damit bezwecken! ich bin naemlich gerade dabei mir ne klasse mit (so ziemlich) allen io funktionen wie es sie auch in c gibt zu schreiben. da mir das io system in java nicht so besonders zusagt(ist halt meine meinung)!
-
Naja die printf Methode kannst du dir sparen.Hab das z.B. im Netz gefunden:
The printf Method Here's a handy addition to the java.io.PrintStream and java.io.PrintWriter classes -- the C like printf() method. The first argument to printf() is a String, known as a format string. The remaining arguments are called 'format specifiers'. Thanks to the var-args feature, you can have as many of these format specifiers as you like. This is easier to explain by way of a simple example: Calendar c = Calendar.getInstance(); System.out.printf("Hi %2s, the current month is: %1tB", cal, "Andy"); Let's break it down, as there are quite a few things going on here. Let us consider the first format specifier in the format string -- that's the bit that reads, %2s. The % symbol signifies that we're using a format specifier. The digit that follows is the argument index. In this case it is 2, and therefore refers to the second argument, which is the string "Andy". The next format specifier is %1tB. From the above explanation, you'll know that it's another format specifier, this time referring to the first argument (the %1 portion tells us that much). On this occasion, we use a t to indicate a date conversion. The B following the t indicates that the month should be output. The resulting string would be, "Hi Andy, the current month is October". For the C programmers out there, the good news is that Sun decided to make the mini-language behind all this instantly recognizable (though not 100% compatible). If you're wondering how you're supposed to figure out what all these fancy format specifiers do -- and there are lots of them -- the javadcoc for the java.util.Formatter class has all the gory details. As you can probably see, without the var-args feature, printf() would hardly be possible. This is a rare example of var-args being used in the proper manner.
Naja ist ein bischen lang für nen Post , such am besten selbst mal nach Java 5 und printf.