freshes Geschrieben 14. Dezember 2010 Geschrieben 14. Dezember 2010 Hallo, ich habe einige Verständnisprobleme mit einer Teilaufgabe, die ich in Auszügen mal niederschreibe: Es soll eine Anwendungsklasse PolyM programmiert werden, die aus einer main()-Methode und mehreren statischen Methoden besteht. Die main()-Methode führt folgende Schritte aus: mit der statischen Methode einnat() soll der Polynomgrad n des Polynoms p(x) eingelesen werden. Anschließend wird mit der Methode einPoly() (Prototyp lautet: static double[]einPoly(int n) ) das Koeffizientenfeld a[] des Polynoms eingelesen. Wenn das Polynom den Grad n hat, dann hat das Feld a[] (n+1) Komponenten. Erste Schwierigkeit ist, dass ich nicht genau weiß was ich mit den Methoden einnat() und einPoly() anfangen soll. Ich nehme mal an, dass ich zu den Methoden selber eine Klasse programmieren muss, oder? Zweite Schwierigkeit: ich weiß nicht so genau, wie ich mehrere Methoden in einem Programm anordnen soll, ich kannte bisher nur Programme mit einer main()-Methode. Ich habe das Teilprogramm mal programmiert, läuft auch, aber ohne die vorgegebenen Methoden (IO1 ist eine solche selbst programmierte Klasse)... class PolyM { public static void main(String [] args) { int n=0; double a[]; int i; /* Tastatureingabe von n */ System.out.println("Bitte Polynomgrad n angeben"); n=IO1.einint(); a = new double[n+1]; for ( i = 0; i < a.length; i++) { System.out.println("Bitte Koeffizienten angeben:"); a[i]=IO1.eindouble(); } } } Zitieren
Der_Lampe Geschrieben 14. Dezember 2010 Geschrieben 14. Dezember 2010 zu deinem ersten Problem: dies sind Eingabemethoden wenn ich das richtig herauslese in denen du die benötigten Werte einlesen sollst/kannst zu deinem zweiten Problem: main() ist genauso eine Methode wie einnat() und einpoly(), du kannst die Methoden einnat() und einpoly() also vor oder hinter die Deklaration der Methode main() setzen in die selbe Klasse Ich hoffe ich konnte dir etwas helfen Zitieren
freshes Geschrieben 15. Dezember 2010 Autor Geschrieben 15. Dezember 2010 (bearbeitet) Also für die Eingabe des Polynomgrades n habe ich eine Klasse EingNat definiert, mit der Eingabemethode einnat() kann man jetzt eine Zahl einlesen. class PolyM { public static void main(String [] args) { int n=0; double a[]; int i; /* Tastatureingabe von n */ System.out.println("Bitte Polynomgrad n angeben"); n=EingNat.einnat(); } } Das Einlesen des Feldes a[] gestaltet sich aber immer noch schwierig. Kann ich dann für meine Eingabemethode einPoly z.B. eine Klasse mit Namen Poly definieren, und dann in mein Programm schreiben: a[]=Poly.einPoly() ? würde das so gehen? also analog zu der oberen Variante. Bearbeitet 15. Dezember 2010 von freshes Zitieren
Klotzkopp Geschrieben 15. Dezember 2010 Geschrieben 15. Dezember 2010 Also für die Eingabe des Polynomgrades n habe ich eine Klasse EingNat definiertWarum? Die Aufgabenstellung ist doch eindeutig: einnat soll in PolyM. Auch für einPoly sollst du keine neue Klasse einführen. Zitieren
freshes Geschrieben 15. Dezember 2010 Autor Geschrieben 15. Dezember 2010 da komme ich aber nicht weiter. static int einnat() ist ein illegal start of expression class PolyM { public static void main(String [] args) { int n=0; { static int einnat() { System.out.println("Bitte Polynomgrad n eingeben"); n=IO1.einint(); return n; } } } } Zitieren
Klotzkopp Geschrieben 15. Dezember 2010 Geschrieben 15. Dezember 2010 Warum steckst du einnat in main? class PolyM { public static void main(String [] args) { // bla } static int einnat() { // blubb } }[/code] Zitieren
freshes Geschrieben 15. Dezember 2010 Autor Geschrieben 15. Dezember 2010 so geht's leider auch nicht: class PolyM { public static void main(String [] args) { int n=0; } static int einnat() { System.out.println("Bitte Polynomgrad n eingeben"); n=IO1.einint(); return n; } } public static void main(String [] args) ^ 1 error Zitieren
Klotzkopp Geschrieben 15. Dezember 2010 Geschrieben 15. Dezember 2010 Die Fehlermeldung wäre hilfreich. Mit "so geht's leider auch nicht" kann man nichts anfangen. In main deklarierst du n, benutzt es aber nicht. In einnat benutzt du n, ohne es deklariert zu haben. Zitieren
freshes Geschrieben 15. Dezember 2010 Autor Geschrieben 15. Dezember 2010 wenn ich in beiden deklariere und sie benutze, läuft das Programm zwar, aber dann wäre einnat() ja sinnlos. Wenn ich nur in main deklariere und sonst nichts, dann öffnet sich die Konsole, aber mehr auch nicht. Es kommt keine Eingabeaufforderung. Es scheint so, als würde unten stehendes Programm die Methode static int einnat() einfach ignorieren. class PolyM { public static void main(String [] args) { int n=0; } static int einnat() {int n=0; System.out.println("Bitte Polynomgrad n eingeben"); n=IO1.einint(); return n; } } Zitieren
Klotzkopp Geschrieben 15. Dezember 2010 Geschrieben 15. Dezember 2010 Es scheint so, als würde unten stehendes Programm die Methode static int einnat() einfach ignorieren.Natürlich tut es das. Du rufst einnat ja auch nicht auf. Wenn du in main nichts weiter tust, tut das Programm eben nichts. Zitieren
freshes Geschrieben 15. Dezember 2010 Autor Geschrieben 15. Dezember 2010 (bearbeitet) etwa so? es läuft zwar, aber ich verstehe den Sinn dahinter nicht, wenn ich das jetzt so richtig gemacht haben sollte. Ist doch sehr umständlich. Im Eingangspost habe ich das sehr einfach innerhalb von main() gemacht. class PolyM { public static void main(String [] args) { double s; s=einnat(); } static int einnat() { int n; System.out.println("Bitte Polynomgrad n eingeben"); n=IO1.einint(); return n; } } Bearbeitet 15. Dezember 2010 von freshes Zitieren
freshes Geschrieben 15. Dezember 2010 Autor Geschrieben 15. Dezember 2010 wenn ich jetzt versuche, obiges Modell für das Feld zu benutzen, bekomme ich folgende Fehlermeldung: PolyM.java:11:6: einPoly(int) in PolyM cannot be applied to () t=einPoly(); ^ PolyM.java:24:11: incompatible types found : int required: double[] return n; ^ 2 errors class PolyM { public static void main(String [] args) { double t; t=einPoly(); } static double[] einPoly(int n) { double a[]; int i; a = new double[n+1]; for ( i = 0; i < a.length; i++) { System.out.println("Bitte Koeffizienten angeben:"); a[i]=IO1.eindouble(); return n; } } } Zitieren
Wurmi Geschrieben 15. Dezember 2010 Geschrieben 15. Dezember 2010 1. Die Methode poly muss mit mit Integer-Parameter aufgerufen werden. 2. Rückgabewert der Methode ist ein Double-Array in kein skalarer Integerwert Zitieren
freshes Geschrieben 15. Dezember 2010 Autor Geschrieben 15. Dezember 2010 so in etwa? irgendwas ist aber immer noch falsch.class PolyM { public static void main(String [] args) { double[] t; t=einPoly(0); } static double[] einPoly(int n) { double a[]; int i; a = new double[n+1]; for ( i = 0; i < a.length; i++) { System.out.println("Bitte Koeffizienten angeben:"); a[i]=IO1.eindouble(); } } } Zitieren
Klotzkopp Geschrieben 15. Dezember 2010 Geschrieben 15. Dezember 2010 irgendwas ist aber immer noch falsch.Tolle Fehlerbeschreibung. Wo ist denn einnat geblieben? Zitieren
freshes Geschrieben 15. Dezember 2010 Autor Geschrieben 15. Dezember 2010 ich wollte nur den zweiten Programmteil behandeln, das Einlesen des Feldes sollte doch auch seperat gehen. Zitieren
Klotzkopp Geschrieben 15. Dezember 2010 Geschrieben 15. Dezember 2010 Und was ist "immer noch falsch"? Die fehlende return-Anweisung? Zitieren
freshes Geschrieben 15. Dezember 2010 Autor Geschrieben 15. Dezember 2010 Die return-Anweisung hab' ich vergessen. Der Fehler liegt aber beim Deklarieren denke ich PolyM.java:13:14: ';' expected int einPoly(0); ^ 1 error Zitieren
Klotzkopp Geschrieben 15. Dezember 2010 Geschrieben 15. Dezember 2010 int einPoly(0);Was soll das sein? In welchem Kontext steht das? In deinem Code im vorletzten Beitrag war das nicht drin. Zitieren
freshes Geschrieben 15. Dezember 2010 Autor Geschrieben 15. Dezember 2010 sorry hab was Falsches kopiert. PolyM.java:29:2: missing return statement } ^ 1 error return hab ich hinzugefügt Zitieren
Klotzkopp Geschrieben 15. Dezember 2010 Geschrieben 15. Dezember 2010 return hab ich hinzugefügtUnd der Compiler beklagt sich immer noch über die fehlende return-Anweisung? Dann hast du es wohl falsch hinzugefügt -> Code zeigen. Oder ist jetzt alles gut? Lass dir doch nicht andauernd jedes bißchen hilfreiche Information aus der Nase ziehen. Glaubst du wirklich, aus einer einzelnen geschweiften Klammer kann man irgendwie erkennen, was du falsch gemacht hast? Zitieren
freshes Geschrieben 15. Dezember 2010 Autor Geschrieben 15. Dezember 2010 ja hab's, hab die return-Anweisung falsch angeordnet. Wenn's interessiert: class PolyM { public static void main(String [] args) { double[] t=einPoly(0); } static double[] einPoly(int n) { double a[]; int i; a = new double[n+1]; for ( i = 0; i < a.length; i++) { System.out.println("Bitte Koeffizienten angeben:"); a[i]=IO1.eindouble(); } return a; } } Danke fürs Helfen. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.