Taschenrechner

Diskutiere Taschenrechner im Java Basics - Anfänger-Themen Bereich.
W

wurstm162

Hallo allerseits,
ich bin ein sehr blutiger Anfänger und habe versucht, eine sehr einfache Variante eines Taschenrechners zu programmieren. Leider funktioniert das Programm nicht; Ich bin schon an der Addition gescheitert. Bitte klärt mich über alle Fehler auf, die ihr finden könnt, seien sie noch einfach. Empfehlungen wie ich mich an das java Lernen herantasten sollte nehme ich auch mit Freuden entgegen.
Beste Grüße,
wurstm162
PS Ich habe das Programm in Eclipse geschrieben


package calculato;

import java.util.Scanner;
public class Calculator {
static int Kosten;
public static void main (String[]args) {

Scanner sc = new Scanner(System.in);

System.out.println("Was für eine Rechnung möchten Sie durchführen, 1 ist Addition");
//1 ist in diesem Fall eine Addition. An die anderen Fälle, also Subtraktion etc habe ich mich noch nicht herangewagt

double klassifizierung = sc.nextDouble();

if (klassifizierung == 1) {
System.out.println("Bitte geben sie die Anzahl der verschiedenen Summanden an");
double summandenAnzahl = sc.nextDouble();
//summandenAnzahl wird abgefragt.
System.out.println("Geben Sie anschließend die verschiedenen Summanden an");
double ergebnis = 0;
//Die double Ergebnis soll durch die folgende for Schleife zu unserem Endergebnis umgewandelt werden
//Bin mir aber nicht sicher, ob das der richtige Ort dafür ist.
for (int i = 1; i < summandenAnzahl + 1; i++) /*Die einzelnen Summanden sollen nacheinander abgefragt werden und dem Ergebnis zugefügt werden*/{
private double summand = sc.nextDouble;
/*Ich weiß wirklich nicht, ob ich hier private verwenden sollte
Ich komme noch nicht mit den ganzen static void private... Sachen klar*/
ergebnis + summand = ergebnis;
}

System.out.println(ergebnis);
}

else {
System.out.println("Weiter bin ich noch nicht gekommen");
}

}
}
 
T

temi

Verwende für Code bitte die Code-Tags: Die drei Punkte rechts vom Smiley => Code => Java.

So kann das ja kein Mensch lesen und u.U. wird es auch falsch dargestellt.

Java:
package calculato;

import java.util.Scanner;
public class Calculator {
    static int Kosten; // Wozu? Variablen beginnen in Java per Konvention mit einem Kleinbuchstaben, hier also "kosten"

    // Idealerweise sollte das einzige "static" erstmal nur vor der main() Methode stehen.

    public static void main (String[]args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Was für eine Rechnung möchten Sie durchführen, 1 ist Addition");

        double klassifizierung = sc.nextDouble();

        if (klassifizierung == 1) {
            System.out.println("Bitte geben sie die Anzahl der verschiedenen Summanden an");
            double summandenAnzahl = sc.nextDouble();

            System.out.println("Geben Sie anschließend die verschiedenen Summanden an");
            double ergebnis = 0;
            
            for (int i = 1; i < summandenAnzahl + 1; i++) {
                private double summand = sc.nextDouble; // "private" gehört an Methoden oder an Attribute, hier nicht
                ergebnis + summand = ergebnis; // Die Variable, der etwas zugewiesen wird steht links vom "="
            }
            System.out.println(ergebnis);
        }

        // else brauchst du hier eigentlich nicht. Schreib einfach die nächste if-Bedinung hin.
    else {
        System.out.println("Weiter bin ich noch nicht gekommen");
    }

    }
}
 
Zuletzt bearbeitet:
T

temi

Weil es mir gerade auffällt: Klassifizierung ist eine Ganzzahl und was ist double?
 
U

user30

Hier mal der Anfang
Java:
import java.math.BigDecimal;
import java.math.MathContext;
import java.util.Scanner;

public class Calculator {
	private static double last = -1;

	@SuppressWarnings("resource")
	public static String readLine() {
		return new Scanner(System.in).nextLine();
	}

	public static void main(String[] args) {
		String control;
		do {
			System.out.println("Welche Operation soll durchgeführt werden? + - * / oder runden:");
			control = readLine();
			switch (control) {
			case "+":
				System.out.println("1. Operand:");
				double d1 = Double.parseDouble(readLine());
				System.out.println("2. Operand:");
				double d2 = Double.parseDouble(readLine());
				last = d1 + d2;
				System.out.println(last);
				break;
			case "-":
				// TODO
				break;
			case "runden":
				last = new BigDecimal(last).round(MathContext.DECIMAL32).doubleValue();
				System.out.println(last);
				break;
			default:
				break;
			}
		} while (control != null && !control.isEmpty());
	}
}
Welche Operation soll durchgeführt werden? + - * / oder runden:
+
1. Operand:
5.6
2. Operand:
5.8
11.399999999999999
Welche Operation soll durchgeführt werden? + - * / oder runden:
runden
11.4
Welche Operation soll durchgeführt werden? + - * / oder runden:
 
T

thecain

Ich würde jetzt nicht für jede Zeile einen neuen Scanner öffnen.
 
U

user30

Ja ich bin mir bei Scanner immer nicht so sicher... Sicher ist sicher. :D

Noch ein Tipp: sout(last); könnte auch nach außerhalb des Switch gezogen werden...
 
W

wurstm162

Hier mal der Anfang
Java:
import java.math.BigDecimal;
import java.math.MathContext;
import java.util.Scanner;

public class Calculator {
    private static double last = -1;

    @SuppressWarnings("resource")
    public static String readLine() {
        return new Scanner(System.in).nextLine();
    }

    public static void main(String[] args) {
        String control;
        do {
            System.out.println("Welche Operation soll durchgeführt werden? + - * / oder runden:");
            control = readLine();
            switch (control) {
            case "+":
                System.out.println("1. Operand:");
                double d1 = Double.parseDouble(readLine());
                System.out.println("2. Operand:");
                double d2 = Double.parseDouble(readLine());
                last = d1 + d2;
                System.out.println(last);
                break;
            case "-":
                // TODO
                break;
            case "runden":
                last = new BigDecimal(last).round(MathContext.DECIMAL32).doubleValue();
                System.out.println(last);
                break;
            default:
                break;
            }
        } while (control != null && !control.isEmpty());
    }
}
Welche Operation soll durchgeführt werden? + - * / oder runden:
+
1. Operand:
5.6
2. Operand:
5.8
11.399999999999999
Welche Operation soll durchgeführt werden? + - * / oder runden:
runden
11.4
Welche Operation soll durchgeführt werden? + - * / oder runden:
Danke vielmals:)
 
A

affot

Also ohne, dass ich deinen Code jetzt versucht habe auszuführen, der Knackpunkt warum es scheitert ist diese Zeile hier:

Code:
ergebnis + summand = ergebnis; //
Die musst du umdrehen!
Zuweisung ist immer:
Variable = ...
Also links vorm Komma darf kein Term stehen, das ist Standard in jeder Programmiersprache und ein entscheidener Unterschied zur Mathematik.
x = 1 ist nicht äquivalent zu 1 = x.
 
Thema: 

Taschenrechner

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben