Fehler: "cannot be applied to"

TommyMo hat gesagt.:
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 :p

Gruß
TOM

Da 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.
 
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ß
TOM
 
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ß
TOM
 
TommyMo hat gesagt.:
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.

Eben nicht ganz. Wenn ich Buchstaben eingebe, kommt zwar die Fehlermeldung durch meine Methode "Eingabe" aber es kommt auch ein Ausnahmefehler durch
PHP:
int n=Integer.parseInt(args[0]);
in der main.
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.
 
Ok, dann änder deine Eingabentestmethode doch einfach. Änder sie so ab, dass du überprüfen kannst, ob eine Zahl oder ein Buchstabe eingegeben worden ist. dann weißt du ja auch, ob du Integer.parseblabla anwenden kannst oder nicht ... .

TOM
 
TommyMo hat gesagt.:
Ok, dann änder deine Eingabentestmethode doch einfach. Änder sie so ab, dass du überprüfen kannst, ob eine Zahl oder ein Buchstabe eingegeben worden ist. dann weißt du ja auch, ob du Integer.parseblabla anwenden kannst oder nicht ... .

TOM

Ich dachte eigentlich, dass dies meine Methode macht. Sie gibt ja auch immer den entsprechenden Fehler aus, nur kommt dazu halt immer noch ein Ausnahmefehler in der main. Ich dachte das Programm wird gestoppt, wenn die Eingabemethode einen Fehler findet, aber anscheinend ist dem nicht so.
 
Solange du in deiner Methode keine Exception wirfst, die du dann in der main abfängst, und dann entsprechend darauf reagierst, oder explizit in deiner Methode das Programm beendest wird sich nichts tun. Das mußt du schon einbauen :p

Gruß
TOM
 
TommyMo hat gesagt.:
Solange du in deiner Methode keine Exception wirfst, die du dann in der main abfängst, und dann entsprechend darauf reagierst, oder explizit in deiner Methode das Programm beendest wird sich nichts tun. Das mußt du schon einbauen :p

Gruß
TOM

Mach ich nicht?
PHP:
static String eingabe(String x, String y) 
{
...
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;  
       }
}
 
Für mich schaut das ganze insofern ein wenig komisch aus, einfach aus dem Grund, weil eingabe bei dir einen String zurückliefert. Wenn ich dich richtig verstanden habe, dann soll eingabe ja lediglich die Richtigkeit der Konsolenparameter bestimmen, richtig? Wenn dem so ist, warum gibt die Methode keinen booleschen Wert zurück. Somit hättest du die Möglickeit in einer einfachen if-Anweisung zu checken ob der Ausdruck korrekt ist oder nicht. Z.B.:

Code:
public static boolean eingabe(String bla, String blabla) {
   // wenn korrekt return true
   // ansonsten return false
}

Somit könnte deine Main dann so aussehn:

Code:
public static void main( ... ) {
   // check ob Eingabe korrekt ... 
   if (eingabe( ... )) 
      // ruf deine methode auf ... 

}

Vielleicht hilft dir das weiter ...

Gruß
TOM
 
Zurück