ERLEDIGT
JA
JA
ANTWORTEN
22
22
ZUGRIFFE
2819
2819
EMPFEHLEN
-
12.12.05 21:20 #1GreenThunder Tutorials.de Gastzugang
Hallo,
in meiner Aufgabe für diese Woche geht es darum eine Kommandozeileneingabe auf Korrektheit (Ganz Zahl, keine String, kein Leerzeichen) zu überprüfen und anschließend in einer Methode die Stirlingzahl der beiden Eingaben berechnen.
Mein Problem ist allerdings die Meldung:
Genau weiß ich allerdings nicht was das bedeutet. Heißt das, dass zwei unterschiedliche Datentypen aufeinander treffen?...AufgabeZwei.java:82: stirling(int,int) in AufgabeZwei cannot be applied to (java.lang.String,java.lang.String)
Desweiteren bin ich mir nicht sicher, ob auch der Fall, Eingabe eines Leerzeichens, zu einer Fehlermeldung führt. Ich glaube mein Programm ignoriert das einfach.
PHP-Code:import java.io.*;
import java.lang.*;
public class AufgabeZwei {
public static long stirling(int n, int k)
{
long stir;
if (n==0 && k==0)
{
return stir=1;
}
else
{
if (k==0)
{
return stir=0;
}
else
{
if (n==k)
{
return stir=1;
}
else
{
return stir=(k*stirling(n-1,k)+stirling(n-1,k-1));
}
}
}
}
static String eingabe(String x, String y)
{
while ( true )
{
if(x.equals("") || y.equals(""))
{
System.out.println("Sie haben keine Zeichen eingegeben!");
return x; }
try
{
int s = Integer.parseInt(x);
int t = Integer.parseInt(y);
if (s<0 || t<0 || s<t)
{
System.out.println("Die eingegebene Zahl liegt ausserhalb des Wertebereiches 0 < k < n !");
return x; }
else
{
return x;
}
}
catch(Exception e)
{
System.out.println("Sie haben keine ganze Zahl eingegeben.");
return x;
}
}
}
public static void main(String[] args)
{
eingabe(args[0],args[1]);
System.out.print(stirling(args[0],args[1]));
}
}
-
Hi,
in der main schreibst Du
System.out.print(stirling(args[0],args[1]));
aber args[] sind Strings, während Deine stirling()-Methode als Übergabeparameter int, int erwartet.
-
12.12.05 21:51 #3GreenThunder Tutorials.de GastzugangIn der Aufgabenstellung steht, dass ich die Methode so aufrufen soll, also muss ich es vorher umwandeln?!
Zitat von Snape
Hab es am Anfang der Methode versucht:
Allerdings kam da die Fehlermeldung:PHP-Code:int x = Integer.parseInt(n);
int y = Integer.parseInt(k);
Soll ich die Umwandlung in der main vornehmen?...AufgabeZwei.java:16: cannot resolve symbol
symbol : method parseInt (int)
location: class java.lang.Integer
int x = Integer.parseInt(n);
-
12.12.05 22:52 #4
- Registriert seit
- Oct 2004
- Ort
- Hessen
- Beiträge
- 310
Hi,
du versuchst gerade die int zahlen n und k wieder in nen int zu parsen.
Da es aber keine methode Integer.parseInt(int) gibt bekommst du diesen fehler:
Probiere es lieber mal so:
int n1=Integer.parseInt(args[0]);
int n2=Integer.parseInt(args[1]);
und dieses übergibst du deiner stirling methode.
Dieser Fehler sagt dir aus, dass es keine methode gibt, so wie du es probierst.
Schau dir bitte mal die klasse Integer an, dann weisst du welche methoden es gibt.
Gruss,
Torsten."There's nothing we have to fear, except Fear itself....."
-
Hallo GreenThunder,
Wenn in der Aufgabenstellung folgendes vorgegeben ist:
System.out.print(stirling(args[0],args[1]));
heißt das, die stirling Methode erhält zwei Parameter als String. Diese werden dann in der Methode umgewandelt. Dann einfach mit n und k weiterarbeiten.
also:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
public class AufgabeZwei { public static long stirling(String nstring, String kstring) { int n = Integer.parseInt(nstring); int k = Integer.parseInt(kstring); long stir; if (n==0 && k==0) ... } static String eingabe(String x, String y) { ... } public static void main(String[] args) { eingabe(args[0],args[1]); System.out.print(stirling(args[0],args[1])); } }
VG Erdal
-
Wenn der Aufruf der Methode so vorgegeben ist, dann halte Dich doch einfach dran:

Code :1 2 3 4 5 6
public static long stirling(String n, String k) { int localN = Integer.parseInt(n); int localK = Integer.parseInt(k); ... }
Beim Parsen der Strings kann es im Übrigen eine Exception geben (NumberFormatException), die Du abfangen solltest. Ansonsten wird bei komischen Kommandozeilenparametern Dein Programm mit eben dieser Exception abbrechen.
-
13.12.05 10:55 #7GreenThunder Tutorials.de Gastzugang
Oh, ich glaub ich hab da was durcheinander gebracht. Also die Methode soll, laut Aufgabenstellung, folgendermaßen deklariert werden:
Wie die Methode dann in der main aufgerufen wird ist nicht vorgeschrieben.PHP-Code:public static long stirling(int n, int k)
-
Na dann musst Du eben vor Aufruf der stirling()-Methode auf int parsen:
Code :1 2 3 4 5 6
public static void main(String[] args) { int iValue1 = Integer.parseInt(args[0]); int iValue2 = Integer.parseInt(args[1]); System.out.println(stirling(iValue1, iValue2)); }
Das Parsen noch in einen try-catch-Block, um Eingaben, die nicht ausschliesslich numerischer Art sind auszuschliessen, fertig.
-
13.12.05 11:02 #9GreenThunder Tutorials.de Gastzugang
Zitat von Snape
Ok, das ist im Prinzip auch das, was torsch2711 vorgeschlagen hat.
Anstatt des try-catch-Blocks müsste doch sicher auch ein break in der Methode "Eingabe" gehen, oder?
-
Ich würde auch ein try-catch Gerüst basteln. Warum etwas neu erfinden, dass schon existiert Programmierer sind oft Minimalisten ... kann ich von mir zumindest behaupten
Gruß
TOMalles Gute kommt von ...
-
13.12.05 11:20 #11GreenThunder Tutorials.de GastzugangDa hast du recht, nur sollen solche Fehleingaben ja schon mit der Methode "Eingabe" abgefangen werden. Ich denke nicht, dass eine weitere try-catch-Anweisung, in der main, Aufgabenstellungsgerecht ist.
Zitat von TommyMo
-
Hm ... ich kann mir jetzt im Moment nicht wirklich was vorstellen. Kannst du mal deine Main posten? Also wie du denkst, dass der Aufruf oder das Programm dann aussehn sollte. Für mich macht eine Methode "eingabe()" in diesem Context auch nicht wirklich Sinn. Liegt aber sicher daran, dass ich die Aufgabenstellung noch nicht ganz verstanden habe.
Gruß
TOMalles Gute kommt von ...
-
13.12.05 12:36 #13GreenThunder Tutorials.de Gastzugang
Also die Aufgabenstellung ist folgende:
"Erstelle ein Programm, dass unter der Nutzung einer Methode "public static long stirling(int n, int k)" die Stirling-Zahl rekursiv berechnet. Dabei werden die Werte für n und k mit der Kommandozeile übergeben und nur dann berechnet, wenn die Eingaben zulässige Zahlen sind und 0 <= k <= n!
In der Aufgabenserie vorher hatten wir ein Methode zur zulässigen Zahleneingabe programmiert und dort stand, dass wir ab da immer diese Methode zur Eingabe ganzer Zahlen nutzen sollen.
-
Naja, dann hast du ja eigentlich, wenn ich dich richtig verstanden habe, eh schon alles was du brauchst, oder nicht? Ich nehme mal an, dass die Eingabe in deiner "eingabe()" methode schon validiert wird. Du könntest ja die Methode um die try-catch Konstruktion erweitern wie oben angeführt (außer du darst sie nicht ändern, dann wird dir nichts anderes überbleiben, wenn du eine Prüfung haben willst).
Gruß
TOMalles Gute kommt von ...
-
13.12.05 12:57 #15GreenThunder Tutorials.de GastzugangEben nicht ganz. Wenn ich Buchstaben eingebe, kommt zwar die Fehlermeldung durch meine Methode "Eingabe" aber es kommt auch ein Ausnahmefehler durch
Zitat von TommyMo
in der main.PHP-Code:int n=Integer.parseInt(args[0]);
Mein Problem ist nun, diesen Fehler in der main zu umgehen, ohne den try-catch-Block, da ja die Fehleingaben schon in der eingabe() abgeblockt werden sollen.
Ähnliche Themen
-
Richtige Syntax bei Operatorüberladung, wann sind "friend", "const", "&" nötig?
Von mrs_schokokeks im Forum C/C++Antworten: 4Letzter Beitrag: 25.08.10, 19:13 -
Matlab-Befehle aus "mex.h" bzw. "matrix.h" bringen Linker Fehler
Von Cappaja im Forum VisualStudio & MFCAntworten: 2Letzter Beitrag: 13.06.09, 12:36 -
Eingabe in der timeline: "time*100" - bei Effekt "turbulentes Versetzen"-"Evolution"
Von MTMonline im Forum Videoschnitt, Videotechnik & -produktionAntworten: 2Letzter Beitrag: 25.04.08, 09:49 -
Fehler bei "<%@ Page Language="VB" %> "
Von Perlmann im Forum ASPAntworten: 4Letzter Beitrag: 26.09.07, 12:04 -
Finder methods + JBoss + Was expecting one of: "CONCAT" "SUBSTRING" ... "(" ... <STRI
Von cengizhdde im Forum Enterprise Java (JEE, J2EE, Spring & Co.)Antworten: 6Letzter Beitrag: 27.05.05, 15:29





Zitieren
Login





