Frage von AllwissendTino, 65

Wie addiere ich private int a mit b, in Java?

public class Calculator {
private int a;
private int b;
public int getA() {
  return a;
}
public void setA(int a) {
  this.a = a;
}
public int getB() {
  return b;
}
public void setB(int b) {
  this.b = b;
}
public void calculate(int ADD) {     
}
public static void main(int[] args) {
}
}

Moin, ich bin ein Anfänger und schule mich selber in Java und ich frage mich wie dieser Code aussehen soll, damit ich wenn ich in der Konsole 2 Elemente eingebe, dieser die addiert oder subtrahiert. Ohne einen Scanner. die main-methode soll die Klasse testen. "Attribute int a,b (mit getter und setter) Methode calculate(int type)"

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von TUrabbIT, 12

"type == 2" ist die Kontrolle ob type den Wert 2 hat.

Du hast ja in der calculate-Methode einen Integer als Datentyp für die Eingabe, also kann man da nicht "ADD" oder "SUB" (Strings) als Parameter übergeben, eine einfache Alternative ist es 2 verschiedene Zahlen dafür zu nehmen, z.B. 1 (für ADD wie Addition) und 2 (für SUB wie Subtraktion)

So wie ich die Aufgabe verstehe, erhälst du 3 Eingaben, 2 Zahlen und die Aktion dazu. Nun sollst du mit den 2 Zahlen ein Calculator Objekt erstellen welches im Konstruktor zwei Integer erwartet, diese werden via set-Methoden als a und b festgelegt.
Danach soll die Methode calculate aufgerufen werden mit einer Kennzeichnung welche Rechnung zutun ist.
Diese holt sich via get-Methoden die beiden Werte a und b und berechnet diese entsprechend des Parameters und gibt das Ergebnis zurück.

Das würde zumindest Sinn ergeben. Wie das meiste davon geht kannst du in der Antwort von MarcelDavis321 finden.

Antwort
von Gehilfling, 41

Erstmal musst du ein Objekt der Klasse "Calculator" mit "new" erzeugen. Dort rufst du die Funktionen "setA" und "setB" entsprechend mit den Eingabewerten auf.

In "calculate" rufst du aus dem Objekt jeweils die "getA" und "getB" auf und führst die gewünschte Operation durch.

Kommentar von AllwissendTino ,

Wo ist "dort" und wie greif ich auf Funktionen zu?

Antwort
von MarcelDavis321, 24

in der main kannst du die Übergabeparameter aufrufen. Diese kommen jedoch als String also musst du sie noch casten.

int zahl1 = Integer.valueOf(args[0])

Als nächstes erstellst du eine neue Instanz der Klasse Calculator. 

Calculator meinCalc = new Calculator();

Dieser wird anschließend mit den Attributen verknüpft

meinCalc.setA(zahl1);
meinCalc.setB(zahl2);



Jetzt muss die calculate Methode noch fertig programmiert werden. Diese soll wahrscheinlich je nach dem ob ADD die Nummer von 1 bis 4 hat plus minus mal oder geteilt rechnen. Also musst du dort eine Abfrage rein bauen. Das geht mit switch/case oder If abfragen

public void calculate(int ADD) {     


switch(ADD){
case 1: meinCalc.getA() + meinCalc.getB();
case 2: meinCalc.getA() - meinCalc.getB();
case 3: meinCalc.getA() * meinCalc.getB();
case 4: meinCalc.getA() / meinCalc.getB();
}
}
Kommentar von AllwissendTino ,

wie würd das mit if aussehen statt switch case?

Kommentar von MarcelDavis321 ,

 if(ADD == 1){

meinCalc.getA() + meinCalc.getB();

}

if(ADD == 2){

meinCalc.getA() - meinCalc.getB();

}

....

Kommentar von AllwissendTino ,

verstehe ich nicht? wieso nicht ADD.equals(2); und selbst wenn, wieso immer noch ADD?

ADD steht für addieren und SUB sollte subtrahieren sein

Kommentar von AllwissendTino ,

public class Calculator {
Calculator meinCalc = new Calculator();
private int a;
private int b;

public int getA() {
return a; }
public void setA(int a) {
this.a = a;}

public int getB() {
return b;}
public void setB(int b) {
this.b = b;}

public void calculate(int ADD) {
if(ADD == 1){
meinCalc.getA() + meinCalc.getB();
}
}

public static void main(int[] args) {
Calculator meinCalc = new Calculator();
meinCalc.setA(1);
meinCalc.setB(2);
}
}

Kommentar von MarcelDavis321 ,

was soll denn die calculate methode genau machen? Wenn sie a + b rechnen soll kannst du die if abfrage weglassen. Aber warum gäb es dann ein ADD parameter? Wenn a + add und b + add kann die if auch weggelassen werden.

Ich glaub du solltst a + add oder so rechnen.

dannach kannst du in der main System.out.println(meinCalc.calculate(5)); machen und dann sollte a um 5 erhöht worden sein

Kommentar von AllwissendTino ,

Im Endeffekt soll ich 4 Zahlen benutzen. z.B. soll

10 - 6 oder 3+4 gerechnet werden und den int type->SUB oder ADD soll genutzt werden. die variablen sind private und soll deshalb getter und setter nehmen. Ich weiß nicht mehr wie ihr jetzt.. 

"Aufgabe:

Erstelle die Klasse Calculator:

Attribute int a,b (mit getter und setter)
Methode calculate(int type)
für type gibt es den Wert ADD oder
SUB"

Kommentar von KnusperPudding ,

wieso nicht ADD.equals(2);

primitive Datentypen haben keine Methoden. Somit ist auch kein equals möglich. Hier wird per == verglichen.

Kommentar von NeoExacun ,

Weil Integer mit == verglichen werden.

Warum ADD? Weil du das so in deinem Code genannt hast. Eigentlich sollte es type heißen, tut es in deinem Code aber nicht.

Antwort
von AllwissendTino, 7
public class Calculator {
Calculator meinCalc = new Calculator();
private int a;
private int b;

public int getA() {
return a; }
public void setA(int a) {
this.a = a;}

public int getB() {
return b;}
public void setB(int b) {
this.b = b;}

public void calculate(int type) {
meinCalc.setA(12);
meinCalc.setB(8);
if(type == 1){
meinCalc.getA() + meinCalc.getB();
}

if(type == 2){
meinCalc.getA() - meinCalc.getB();
}
}
public static void main(int[] args) {
}
}

Was fehlt hier noch und kann mir jmd erklären was das type == 2 ist? Was soll denn 2 bedeuten?

Antwort
von Borgler94, 22

diese Seite müsste dir alles nötige erklären

http://www.java-tutorial.org/ein-ausgabe-streams.html

Antwort
von NeoExacun, 26

1. Die genaue Aufgabenstellung bitte.

2. Müssen die Zahlen wirklich von der Konsole einelesen werden?

3. Warum kein Scanner?

4. Was ist der Paramater ADD der Methode calculate()?

Kommentar von AllwissendTino ,

1. Erstelle die Klasse Calculator:

Attribute int a,b (mit getter und setter)
Methode calculate(int type)
für type gibt es den Wert ADD oder
SUB

2. Ja ich denke mit nem system.in.read evtl?
3.keiner nötig
4. addieren

Kommentar von NeoExacun ,

Also, dann soll der Parameter nicht ADD sonder type heißen.

In die Kommandozeile gibst du dann ADD oder SUB ein und je nachdem soll der Calculator a und b addieren oder b von a subtrahieren.

Mit nem Scanner ist es aber einfacher. Du kannst aber natürlich auch direkt einen InputStreamReader verwenden.

Wenn du konkrete Fragen stellst, kann ich dir helfen. Den kompletten Code werde ich dir nicht schreiben.

Keine passende Antwort gefunden?

Fragen Sie die Community