# was kommt in den methodenkopf?



## Ahab (5. November 2009)

nabend, also... ich hab hier folgenden quellcode:

import java.io.*;

public class Werkzeug { 

    static void plusInt(int x, int y) {

        BufferedReader din = new BufferedReader (new InputStreamReader(System.in));

        x = Integer.parseInt(din.readLine());

        y = Integer.parseInt(din.readLine());

        int Ergebnis = x + y; 

        System.out.println(Ergebnis);

        }

    public static void main (String[] args) throws IOException {

        plusInt(); // *Was kommt hier in die Klammer rein???*

        }

}

wenn ich den methodenkopf in der mainmethode leer lasse sagt der compiler sinngemäß, er kann "()" nicht mit plusInt(int x, int y) verknüpfen.
laut skript meiner letzten vorlesung kommt in die besagte klammer ein ausdruck rein. aber was denn für einer?

bitte helft mir, der code muss heute noch raus


----------



## DarkMo (6. November 2009)

na is doch klar ^^
du rufst eine parameterlose methode auf - die es nicht gibt. es gibt nur die mit 2 parametern. soll er sich die parameter aus den fingern saugen?

du hast dabei jetzt 2 lösungsmöglichkeiten:
entweder du killst einfach die parameter bei der methoden deklaration und lässt den aufruf wie er is und lässt die eingabe, wie dus jetz schon hast, innerhalb der methode erledigen
oder aber, du baust die eingabe mit in die main rein und behandelst das nicht mehr in der methode selber, musst dann aber eben das eingelesene übergebenen - indem du eben statt plusInt() -> plusInt(x, y); aufrufst.

also atm hast du nen mischmasch. da alles nötige innerhalb der methode erledigt wird, brauchst du gar keine parameter übergeben. solltest du x und y nicht in späteren anderen methoden auch noch brauchen, dann langt es, wenn du die eingabe innerhalb der methode erledigst. willst du aber noch ne minusInt() methode bauen zum bsp, die mit der selben eingabe arbeitet, solltest du das einlesen in der main machen, so das du die eingelesenen variablen dann an die jeweilige methode übergeben kannst.


----------



## k-b (8. November 2009)

Möglichkeit 1:

```
import java.io.*;
 
 public class Werkzeug { 
 
     static void plusInt() {
 
         BufferedReader din = new BufferedReader (new InputStreamReader(System.in));
 
         x = Integer.parseInt(din.readLine());
 
         y = Integer.parseInt(din.readLine());
 
         int Ergebnis = x + y; 
 
         System.out.println(Ergebnis);
 
         }
 
     public static void main (String[] args) throws IOException {
 
         plusInt(); 
 
         }
 
 }
```

Möglichkeit 2 (sauberer programmiert):


```
import java.io.*;
 
 public class Werkzeug { 
 
     static [B]int[/B] plusInt(int x, int y) {
 
         int Ergebnis = x + y; 
 [B]return[/B] Ergebnis;
 
         }
 
     public static void main (String[] args) throws IOException {
 
          [B]BufferedReader din = new BufferedReader (new InputStreamReader(System.in));

          int x = Integer.parseInt(din.readLine());

int y = Integer.parseInt(din.readLine());
         int Ergebnis = plusInt(x, y); 

          System.out.println(Ergebnis);[/B]        
         }
 
 }
```

Ist sauberer, wenn eine Methode nur eine Aufgabe hat. Dann kannst du sie auch wiederverwenden.


----------

