Veröffentlicht 14. Dezember 201014 j 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(); } } }
14. Dezember 201014 j 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
15. Dezember 201014 j 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 201014 j von freshes
15. Dezember 201014 j 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.
15. Dezember 201014 j 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; } } } }
15. Dezember 201014 j Warum steckst du einnat in main? class PolyM { public static void main(String [] args) { // bla } static int einnat() { // blubb } }[/code]
15. Dezember 201014 j 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
15. Dezember 201014 j 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.
15. Dezember 201014 j 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; } }
15. Dezember 201014 j 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.
15. Dezember 201014 j 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 201014 j von freshes
15. Dezember 201014 j 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; } } }
15. Dezember 201014 j 1. Die Methode poly muss mit mit Integer-Parameter aufgerufen werden. 2. Rückgabewert der Methode ist ein Double-Array in kein skalarer Integerwert
15. Dezember 201014 j 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(); } } }
15. Dezember 201014 j irgendwas ist aber immer noch falsch.Tolle Fehlerbeschreibung. Wo ist denn einnat geblieben?
15. Dezember 201014 j ich wollte nur den zweiten Programmteil behandeln, das Einlesen des Feldes sollte doch auch seperat gehen.
15. Dezember 201014 j Die return-Anweisung hab' ich vergessen. Der Fehler liegt aber beim Deklarieren denke ich PolyM.java:13:14: ';' expected int einPoly(0); ^ 1 error
15. Dezember 201014 j int einPoly(0);Was soll das sein? In welchem Kontext steht das? In deinem Code im vorletzten Beitrag war das nicht drin.
15. Dezember 201014 j sorry hab was Falsches kopiert. PolyM.java:29:2: missing return statement } ^ 1 error return hab ich hinzugefügt
15. Dezember 201014 j 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?
15. Dezember 201014 j 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.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.