Versuche gerade mein erstes Java-Programm zum Laufen zu bringen.
Programm: Calculator
Java:
publicclassCalculator{publicvoid add (int number1,int number2){System.out.println("The sum of "+ number1
+" and "+ number2 +" is "+(number1 + number2));}}
Dieses konnte ich ohne Problem kompilieren.
Mittels Testdriver versuchte dieses Programm zu testen:
Java:
publicclassCalculatorTest{publicstaticvoid main (String[] args){CalculatorCalculatorTest=newCalculator();CalculatorTest.number1 =6;CalculatorTest.number2 =8;CalculatorTest.add();}}
Hier kam die Fehlermeldung "Cannot find a symbol variable number1", dieser habe ich doch den Wert "6" zugeordnet?
publicclassCalculatorTest{publicstaticvoid main (String[] args){Calculator calculator =newCalculator();
calculator.add(6,8);}}
So sollte es funktionieren.
Variablennamen immer lowerCamelCase, Klassennamen UpperCamelCase.
Du erzeugst eine neue Instanz der Klasse Calculator. Auf dieser Instanz rufst du die add()-Methode auf. Die add Methode erwartet als Parameter, die beim Aufruf übergeben werden, zwei Werte des Typs int.
Du musst die variablen nicht im Calculator verändern. Die Variablen gibt es doch gar nicht. Und außerdem hast du festgelegt das die Funktion add() 2 int erwartet. Guckst du hier:
Java:
publicclassCalculatorTest{publicstaticvoid main (String[] args){CalculatorCalculatorTest=newCalculator();CalculatorTest.add(6,8);}}
Damit Dein Aufruf aus der Main funktionieren kann, müsste die Klasse Calculator so aussehen:
Java:
publicclassCalculator{publicint number1, number2;publicvoid add (){System.out.println("The sum of "+ number1
+" and "+ number2 +" is "+(number1 + number2));}}
Nein beim String verketten wird alles in einen String umgewandelt. Wenn man was addieren möchte (da das + ja der verkettungsoperator ist) packt man das in Klammern.
Welcher String ? Deine beiden Argumente number1 und number2 sind int.
Oder meinst Du die Println Anweisung ? Hier hat das "+" 2 Funktionen, die für Verwirrung sorgen können.
Da Du aber die Berechnung in Klammern gesetzt hast, kann nichts passieren.
Das + in der Print bzw println Anweisung dient AUCH zur Verkettung von Bildschirmausgaben "test "+meinezahl.
Wenn Du dann hier auch rechnen möchtest, musst Du die Berechnung klammern, damit sie vorher ausgeführt wird, bevor der wert automatisch in einen String gewandelt wird und an den anderen Text drangehängt wird.
sind number1 und number2 nur Parameter. Das heißt, dass die Werte, die du beim Methodenaufruf in die Klammern schreibst, innerhalb der Methode unter diesem "Namen" erreichbar sind.
Bei
Java:
publicvoid add (5,20){
würdest du innerhalb der Methode mit number1(hier: 5) und number2(hier: 20) arbeiten können. Es sind aber keine Variablen im eigentlichen Sinne.
Eine Variable, die du mit
Java:
Objektname.XY = bla
initialisieren könntest muss innerhalb der Klasse (nicht in einer Methode) deklariert (bedeutet sowas wie angelegt) bzw. auch noch initialisiert (mit einem Wert gefüttert) sein. Bsp.:
Java:
String name ="Harry"
. Das hast du hier nicht gemacht und deshalb gibt es diese Variable auch nicht (cannot find symbol: Variable bla).
public//öffentlichint//int als Rückgabetypadd(//Nameint a,int b)//parameter{//anfangint rtn;//lokale Variable
rtn = a+b;//zugriff auf die Parameterreturn rtn;//zurückgeben von rtn}//ende
und der Aufruf:
Java:
int ergebnis;//variable erzeugen
ergebnis =add(5,20);//add mit den Parametern 5 und 20 aufrufen
public//öffentlichint//int als rückgabetypadd(//nameint a,int b)//parameter{//anfangint rtn;//lokale variable
rtn = a+b;//zugriff auf die parameterreturn rtn;//zurückgeben von rtn}//ende
und der aufruf:
Java:
int ergebnis;//variable erzeugen
ergebnis =add(5,20);//add mit den parametern 5 und 20 aufrufen