Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ] 
  Druckansicht

  Taschenrechner
Autor Nachricht
    BeitragVerfasst: 23.11.2007 00:21 
Neuankömmling
Offline

Beiträge: 6
Registriert: 23.11.2007 00:17
Wohnort: Stuttgart
Hey there..
wäre einer von euch eventuell so nett und würde mir beim Programmieren eines Taschenrechners mit Java "behilflich" sein??
Grüßle Katarina


Nach oben
 Profil  
 

  
    BeitragVerfasst: 23.11.2007 00:59 
ehrenwertes Mitglied
ehrenwertes Mitglied
Benutzeravatar
Offline

Beiträge: 1178
Registriert: 16.04.2005 12:34
Wohnort: Hannover
hi und willkommen :)

Ich hab fast keine Ahnung vom programmieren, aber es würde potentiellen Kandidaten wohl helfen, wenn du bisschen genauer sagst was du suchst.

________________________

Das Unsympathische an den Computern ist, daß sie nur ja oder nein sagen können, aber nicht vielleicht.
Brigitte Bardot


Nach oben
 Profil  
 

  re: Taschenrechner
    BeitragVerfasst: 23.11.2007 13:07 
Neuankömmling
Offline

Beiträge: 6
Registriert: 23.11.2007 00:17
Wohnort: Stuttgart
Einen einfachen Taschenrechner der arithmetische Ausdrücke auswertet. Folgende Operatoren sollen unterstützt werd:
^Potenz
* Multiplikation
/ Division
+ Addition
- Subtraktion
# Negation (+/- Taste auf dem Taschenrechner)
C Löschen
sin Sinus-Funktion

Weiterhin sollen noch sie Methoden checkInt und checkFloat angewandt werden, mit denen man prüfen kann, ob eine Zeichenkette in eine Gnaz- oder Flieskommazahl umgewandelt werden kann. Die eigentlich Konvertierung kann dann durch die Methoden parseInt und parseFloat aus derselben Klasse erfolgen.
Die einzelnen Elemente bei der Eingabe sollen durch Leerzeichen voneinander getrennt eingegeben werden und die Zeile dann mit der Methode split aus java.lang.String in einzelne eile unterteilt werden.
Hoffe jetzt ist es ein wenig deutlicher...
Katarina


Nach oben
 Profil  
 

  re: Taschenrechner
    BeitragVerfasst: 24.11.2007 01:56 
Neuankömmling
Offline

Beiträge: 6
Registriert: 23.11.2007 00:17
Wohnort: Stuttgart
Schafft es wenigstens einer von euch Java-Programmierern zu erklären wie das ganze funktioniert wenn ich hier eine Lösung reinstelle??
Oder mag keiner helfen weil ich ein Mädchen bin und damit sowieso ein hoffnungsloser Fall??


Nach oben
 Profil  
 

  
    BeitragVerfasst: 24.11.2007 02:04 
aktives Mitglied
aktives Mitglied
Benutzeravatar
Offline

Beiträge: 695
Registriert: 12.07.2004 21:23
Wohnort: FRIESLAND
Ich bin mir sicher, wenn Du hier Code reinstellst und Du Fragen dazu hast, wird Dir jemand antworten.

Du hast einfach geschrieben, was der Rechner können muss und ob jemand behilflich sein kann. Geholfen wird Dir, aber es wird Dir vermutlich keiner den Taschenrechner programmieren. Du musst schon genaue Fragen stellen.

Worin bestehen Deine Probleme ? Soll Dein Taschenrechner eine grafische Oberfläche haben, oder soll Dein Programm einfach nur einen String entgegennehmen und zerlegen und daraus die Rechenoperationen ermitteln ?

Ich hoffe Dir damit eine kleine Starthilfe gegeben zu haben...


Nach oben
 Profil E-Mail senden  
 

  re: Taschenrechner
    BeitragVerfasst: 24.11.2007 02:18 
Neuankömmling
Offline

Beiträge: 6
Registriert: 23.11.2007 00:17
Wohnort: Stuttgart
Also das ganze ist unter NetBeans geschrieben und ohne GUI.
Die Syntax wäre folgende:
Code:
package aufgabe_2;
import HfT.Eingabe;
import java.lang.*;

public class Main {
   
    public static void main(String[] args) {

        //declaration of the variables
        float number_1;
        float number_2;
        float result = 0;
        String operator = "calculation";
       
System.out.println("Please enter your required arithmetic operation:");
        //read in the whole line
        String input = HfT.Eingabe.readLine();
        String array_input[] = input.split(" ");
        //split up parts in the read in line before every space
        //put the single parts into an array
       
        for(int i=0; i<array_input.length; i++) {
           
            //check if it´s a number or operator
            if(HfT.Eingabe.checkFloat(array_input[i])) {
               
                //if it´s a number then convert the number
                number_2 = HfT.Eingabe.parseFloat(array_input[i]);
               
               
                if(operator.equals("+")) {
                    result = result + number_2;  }
                else if(operator.equals("-")) {
                    result = result - number_2;  }
                else if(operator.equals("*")) {
                    result = result * number_2;  }
                else if(operator.equals("/"))
               
                {
                    if(number_2 != 0)
                    {
                    result = result / number_2; 
                    }
                    else
                    {
                        System.out.println("No result since not defined");
                    }
                }
                 
                else if(operator.equals("^")) {
                    result = (float) Math.pow(result,number_2);  }
                else if(operator.equals("calculation")) {
                    result = number_2; }
               }
               
           
           
            else {               
                operator = array_input[i];
                operator = operator.toLowerCase();
               
                if(operator.equals("#")) {
                    result = result * (-1); }
                else if(operator.equals("c")) {
                    result = 0; operator = "calculation"; }
                else if(operator.equals("sin")) {
                    result = (float) Math.sin(result); }
                 }
         
             }
       
        System.out.println(result);
    }
   
}


was ich nicht verstehe ist eigentlich ALLES!!
Naah..aber wie zum Beispiel hier:

if(operator.equals("+")) {
result = result + number_2; }

result ist zu Beginn ja "0" und dann folgt nach einem "=" nochmals ein result und die 2te eingegebene Zahl wir addiert?? Schon da versteh ich nicht wie das Ding arbeitet und das macht mir irgendwie zu schaffen, da der ganze Rest so aufgebaut ist.


Nach oben
 Profil  
 

  
    BeitragVerfasst: 24.11.2007 02:52 
Moderator
Moderator
Benutzeravatar
Offline

Beiträge: 736
Registriert: 12.06.2000 01:01
Wohnort: Pullach, Bayern
Hab mir mal erlaubt deinen Code in Code-Tags zu setzen, so kann man das ganze viel besser lesen.

Anscheinend hast du noch überhaupt keine Ahnung vom Programmieren. Ein Forum ist wol auch nicht der richtige Ort um sowas zu lernen. Such dir doch ein schönes Tutorial, für Java sollte es da einiges geben. Auf alle Fälle ist sehr viel Einsatz gefragt wenn du wirklich Programmieren lernen willst. Es kann aber auch sehr viel Spaß machen.

Zu deinen beiden Zeilen kann ich dir aber mal ne kleine Erklärung schreiben.
if leitet eine Bedingung ein. Wenn die Bedingun in den runden Klammern () wahr ist, wird der Code in den geschwungenen Klammern {} ausgeführt. Das was in den runden Klammern steht hat was mit objektorientiertem Programmieren zu tun, aber in diesem Fall solltest du verstehen was das macht.
Nun zu dem result = result + number_2:
Diese Zeile stellt keine mathematische Gleichung dar.
Das = ist ein Zuweisungsoperator. Die Variable die links vom = steht, bekommt das zugewieden was rechts davon steht. Der Computer addiert also result und number_2 und schreibt danach das Ergebnis in result. Das neue result wird das alte result plus number2.
Einfacheres Beispiel:
i = i + 1 verursacht dass i um 1 erhöht wird.

Ich hoffe das reicht dir als Anstoß.

________________________
Intelligenz ist die Fähigkeit, Arbeiten durch Nachdenken zu erledigen oder die fehlende Notwendigkeit bestimmter Arbeiten zu erkennen. Intelligente Menschen gelten daher oft als faul. (aus Kamelopedia, der freien Kamel-Enzyklopädie)


Nach oben
 Profil  
 

  re: Taschenrechner
    BeitragVerfasst: 24.11.2007 10:07 
Neuankömmling
Offline

Beiträge: 6
Registriert: 23.11.2007 00:17
Wohnort: Stuttgart
Könntest du mir das trotzdem anhand eines einfach Zahlenbeispiels erklären, also in dem für number_1 und number_2 Zahlen eingesetzt werden. Und das einfach mal durch die if-Schleife laufen lassen, damit ich sehen kann was da reingeht und was wieder rauskommt??
Und wieso wird aber nur die number_2 geprüft und konvergiert und addiert?? Was passiert mit number_1??
Und wieso kann ich trotzdem mehr als 2 Zahlen eingeben, wenn nur 2 deklariert sind??


Nach oben
 Profil  
 

  
    BeitragVerfasst: 24.11.2007 13:56 
ehrenwertes Mitglied
ehrenwertes Mitglied
Benutzeravatar
Offline

Beiträge: 1178
Registriert: 16.04.2005 12:34
Wohnort: Hannover
ich kann etwas mathe und pascal und wenn ich da nur mal logisch rangehe...
oh, grad wollte ich auch sagen, daß vielleicht was fehlt und daß ich number_1 vermisse, aber da klappt wohl doch so:

- du zerlegst die Eingabe in i Teile
- wenn der erste Teil ein "float" ist, dann wird er "number_2" zugewiesen (nennt sich 2 ist aber die erste zahl)
- der operator steht noch auf "calc", dadurch kommt weiter unten result = number_2
- dann gehts weiter mit der for-schleife

Wie gesagt, ich verstehe nur englisch aber kein java, dürfte aber so funktionieren. Für den generellen Einstieg wäre ein tutorial oder Buch besser.

außerdem glaube ich, daß dieser rechner kein punkt vor strich beherrscht :)

________________________

Das Unsympathische an den Computern ist, daß sie nur ja oder nein sagen können, aber nicht vielleicht.
Brigitte Bardot


Nach oben
 Profil  
 

  
    BeitragVerfasst: 24.11.2007 14:24 
aktives Mitglied
aktives Mitglied
Benutzeravatar
Offline

Beiträge: 695
Registriert: 12.07.2004 21:23
Wohnort: FRIESLAND
Die Teile des Strings werden in einem Array gespeichert. Ein Array ist eine "Sammelvariable" für mehrere Werte. Der Name des Arrays lautet array_input[]. Der Ausdruck 5 + 3 wird folgendermaßen in das Array gespeichert:

array_input[0] = 5
array_input[1] = "+"
array_input[2] = 3

In der for-Schleife wird jetzt jedes einzelne Zeichen geprüft und verarbeitet. Die Schleife wird sooft durchlaufen, wie das Array Elemente hat. In diesem Fall also 3 mal.

Code:
Die Prüfung der Elemente in diesem Beispiel erfolgt so:

1. Schleifendurchlauf
=============
1.)
Prüfung: Erstes Element ist eine Zahl(Float) ?
Ergebnis: ja
Was tun: Weise der Variable number_2 diese Zahl zu (hier: Der Wert 5)

2.)
Prüfe Wert in Variable operator
Ergebnis: calculation
Was tun: Weise der Variable result den Wert der Variable number_2 zu

2. Schleifendurchlauf:
==============
1.)
Prüfung: Erstes Element ist eine Zahl(Float) ?
Ergebnis: Nein
Prüfung: Erstes Element ist ein "+" ?
Ergebnis: Ja
Was tun: Weise der Variable operator den Wert "+" zu.

3. Schleifendurchlauf:
==============
1.)
Prüfung: Erstes Element ist eine Zahl(Float) ?
Ergebnis: ja
Was tun:
   Prüfung: Ist die Variable operator ein "+" ?
   Ergebnis: ja
   Was tun: addiere zur Variable result (momentaner Wert = 5) den Wert 3

Schleifendurchlauf beendet.
Variable result enthält nun den Wert 8.

System.out.println(result) bedeutet, dass der Wert von result auf der sog. Konsole ausgegeben wird.


Hoffe, es hilft ein wenig, den Code zu verstehen. Wenn man erstmal drin ist, ist's gar nicht so schwer.


Nach oben
 Profil E-Mail senden  
 

  re: Taschenrechner
    BeitragVerfasst: 24.11.2007 21:24 
Neuankömmling
Offline

Beiträge: 6
Registriert: 23.11.2007 00:17
Wohnort: Stuttgart
Hey, vielen lieben Dank! Das Ganze ist nicht einmal ganz so unlogisch wie es auf den ersten Blick erscheint. :lol: Zumindest hab ich es, so weit so gut, jetzt auch wirklich verstanden. Jetzt hätte ich aber doch noch eine klitze kleine Bitte, danach kommt auch wirklich nichts mehr...VERSPROCHEN! Der Taschenrechner hat nämlich tatsächlich keine Punkt-vor-Strich-Erkennung...wie und wo baue ich diese mit ein?


Nach oben
 Profil  
 

Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


  Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
RSS-Feed
Impressum und Kontakt
Style created by phpBB3 styles , ziola alveo akuna
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Optimized by SEO phpBB
Deutsche Übersetzung durch phpBB.de