Rechner rechnet falsch bitte hilfe

  • Antworten:19
  • Bentwortet
Lucas Gregor
  • Forum-Beiträge: 16

28.08.2013, 18:28:37 via Website

Hallo ich habe für die schule eine Notengrenzen App programmiert allerdings rechnet diese falsch.
Hier erst mal die java acticity:
1public void Rechnen (View view) {
2 int GesammtPunkte;
3 int Note1;
4 int Note2;
5 int Note3;
6 int Note4;
7 int Note5;
8 int Note6;
9
10 EditText Gesammt = (EditText)findViewById(R.id.Punkte);
11 EditText Feld1 = (EditText)findViewById(R.id.Punkte1);
12 EditText Feld2 = (EditText)findViewById(R.id.Punkte2);
13 EditText Feld3 = (EditText)findViewById(R.id.Punkte3);
14 EditText Feld4 = (EditText)findViewById(R.id.Punkte4);
15 EditText Feld5 = (EditText)findViewById(R.id.Punkte5);
16 EditText Feld6 = (EditText)findViewById(R.id.Punkte6);
17 if (Gesammt.getText().toString().length() == 0) {
18 return;
19 }
20 GesammtPunkte = Integer.parseInt(Gesammt.getText().toString());
21
22 Note1 = GesammtPunkte / 100 * 95;
23 Note2 = GesammtPunkte / 100 * 80;
24 Note3 = GesammtPunkte / 100 * 65;
25 Note4 = GesammtPunkte / 100 * 50;
26 Note5 = GesammtPunkte / 100 * 30;
27 Note6 = 0;
28
29
30 Feld1.setText(""+Note1);
31 Feld2.setText(""+Note2);
32 Feld3.setText(""+Note3);
33 Feld4.setText(""+Note4);
34 Feld5.setText(""+Note5);
35 Feld6.setText(""+Note6);
36 }
So der fehler ist jetzt gebe ich hundert ein kommt 95,80, usw. raus das ist ja noch richtig aber wenn ich eine zahl über Hundert eingebe kommt ebenfalls nur 95,80, usw. raus obwohl es ja eigentlich die Gesammt Punkte durch Hundert und dann mal 95,80 usw. wenn die zahl unter Hundert ist wird nur in allen Feldern 0 angezeigt. Finde irgendwie keinen Fehler Log Cat kann ja nicht nehmen da die app ja eigentlich keinen Fehler an sich hat oder liege ich da falsch. Es kann auch sein das ich einen simplen Fehler habe da ich anfänger im programieren bin.
Vielen Dank schon mal für Antwort.
Mfg Lucas

Ps.: Eben noch herausgefunden es rechnet nur in den 100 schriten also 200 war ergebnis 190 etc

— geändert am 28.08.2013, 18:36:00

Antworten
Christian
  • Forum-Beiträge: 307

28.08.2013, 18:40:18 via Website

Hi Lucas,

ähm du rechnest mit int werten da wird niemals ein wert mit einer Nachkommastelle rauskommen.

mfg Christian

— geändert am 28.08.2013, 18:47:00

Antworten
Lucas Gregor
  • Forum-Beiträge: 16

28.08.2013, 18:54:08 via Website

Wo soll ich den Klammern setzen bei der berechnung ist das doch egal 125/100*95= 118,75 das sind 95% wenn ich mich nicht irre ne klammer würde entweder das ergebnis zum falschen verändern oder nichts bringen da man Punktrechnung nacheinander rechnet oder ?

Antworten
Lucas Gregor
  • Forum-Beiträge: 16

28.08.2013, 19:09:16 via Website

womit müsste ich den rechnen das es geht aber die vermutung das es nicht richtig rechnet daran liegt das kommastellen nicht ausgegeben werden können ist richtig oder
Ps.: habe eben anderen Forum eintrag entdeckt wo steht ich soll statt int float nehmen ist das richtig
Pps.: Christian antwortest du eigentlich auf jede frage bei 10 Forums einträgen die ich gefunden habe hast du bei 9 geantwortet :D
Ppps.: So geht. Solche dummen fragen kommen wenn man was programieren will und nicht weiß was int bedeutet was mich aber wundert habe bei youtube ein video zur einer rechen app gefunden und da wird gesagt das man kommazahlen auch mit in benutzen kann ?

Ich habe ja auch geschrieben das ich ziemlicher anfänger bin und das es ein simpler fehler sein kann ich habe erst vor einigen tagen mit programieren angefangen und das auch nur mit dem internet und google da mir keiner ein gutes Lehrbuch zu Java programieren mit eclipse empfehlen konnte

— geändert am 28.08.2013, 19:27:20

Antworten
Michele
  • Forum-Beiträge: 1.525

28.08.2013, 19:22:31 via Website

Hallo.

Du brauchst hier nicht pushen.
Bearbeite deine Beträge bitte immer und setze da dein EDIT hinzu.

Und das solltest du eigentlich wissen wegen int und float.
Nimm float.


LG

— geändert am 28.08.2013, 19:23:25

impjor

Antworten
San Blarnoi
  • Forum-Beiträge: 2.545

28.08.2013, 22:54:40 via Website

Mit float/double wird das vermutlich in den meisten Fällen funktionieren, aus numerischer Sicht würde ich in diesem Trivialfall jedoch folgende Lösung bevorzugen:

alter Code:
Note1 = GesammtPunkte / 100 * 95;
Feld1.setText(""+Note1);

neuer Code:
Note1 = GesammtPunkte * 95;
Feld1.setText(String.format("%d.%02d", Note1/100, Note1%100));

Begründung sollte offensichtlich sein, falls nicht bitte fragen.

Antworten
Lucas Gregor
  • Forum-Beiträge: 16

29.08.2013, 07:05:20 via Website

Die prozent werden jetzt erst im set.text ausgerechnet weiß allerdings nicht was das bringt kenne leider nur ein paar grundkentnise da ich dabei bin über solche einfache apps so lernen ich programmiere sie sie geht nicht ich suche in so einem forum nach lösung und merke sie mir dann um sie übertragen zu können. Bsp. Ich habe int benutzt ging nicht habe nachgefragt im forum jetzt kenne ich float und kann dieses wissen auch in anderen apps benutzen:D
Ps. Kann mir wer ne Seite empfehlen wo alle verschiedene Klassen beschrieben sind müsste ja noch ein paar für text und nummer geben oder

Antworten
Babette R.
  • Forum-Beiträge: 239

29.08.2013, 07:40:05 via Website

Würdest du bitte mal deinen Text mit Kommata und Interpunktionszeichen gliedern? Dieses Kauderwelsch versteht ja kein Mensch!

Und zum Thema Lernen: Ich kann dir das oder dieses Buch empfehlen. Damit habe ich als totaler Neuling auf diesem Gebiet sehr gut und schnell gelernt.

San Blarnoi

Antworten
San Blarnoi
  • Forum-Beiträge: 2.545

29.08.2013, 09:58:20 via Website

Die prozent werden jetzt erst im set.text ausgerechnet weiß allerdings nicht was das bringt

Was es bringt: Der Code funktioniert mit int Variablen und liefert mathematisch korrekte Ergebnisse.
Probier mal ein paar Zahlen mit deinem float code, da wirst du vermutlich schnell welche finden, die ein "falsches" Ergebnis liefern.

Im übrigen kann ich mich Babette nur anschließen: wenn du so programmierst wie du hier Beiträge schreibst, dann wird das nie was :)

Antworten
Lucas Gregor
  • Forum-Beiträge: 16

29.08.2013, 12:20:40 via Website

Meinst du mit Falsch Rechnen diese übertrieben langen decimal Zahlen und kannst du mir ne seite nenne die mir Eclipse programmieren auf deutsch erklärt und wo ich alles nachgucken kann bei Google komm ich immer nur auf englisch sprachige seiten.

Antworten
Babette R.
  • Forum-Beiträge: 239

29.08.2013, 13:04:01 via Website

Eclipse ist nur das Werkzeug, was du lernen musst ist Java. Und da scheinen dir grundlegende Dinge zu fehlen. Du solltest dich erst einmal mit dem Konzept objektorientierter Programmiersprachen auseinandersetzen und wie welche Problemstellungen in Java gelöst werden. Ich würde dir auch raten, das nicht direkt mit Eclipse zu lernen, sondern in einem einfachen Editor wie beispielsweise TextPad.

Antworten
San Blarnoi
  • Forum-Beiträge: 2.545

29.08.2013, 13:06:15 via Website

Ist deine Tastatur kaputt?
Oder respektierst du die Mitleser hier so wenig das es dir egal ist, wenn die deinen Text 3 mal lesen müssen um ihn zu verstehen?
Ist es nicht so das du in diesem Forum nach Hilfe suchst? Wäre es dann nicht angebracht, deine Beiträge in einer Form zu verfassen, die es den Hilfswilligen möglichst leicht macht, dir zu helfen?


Meinst du mit Falsch Rechnen diese übertrieben langen decimal Zahlen

Natürlich.
Wenn man eine ganze Zahl durch 100 teilt, dann kann das Ergebnis maximal 2 Nachkommastellen haben; weicht das Ergebnis hiervon ab, ist es mathematisch falsch.

In deinem Fall mag das keine Relevanz haben, weil man die Ausgabe runden und den Fehler so verbergen könnte, aber stell' dir vor du müsstest mit dem Ergebnis weiter rechnen... da werden die Rundungsfehler sich schnell in den sigifikanten Bereich aufsummieren, und dann suchst du dir nen Wolf, wenn z.B die Summe auf einer Rechnung nicht stimmt und der Empfänger sich beschwert :)


kannst du mir ne seite nenne die mir Eclipse programmieren auf deutsch erklärt

Nein.
Englischkenntnisse sind m.E Voraussetzung für einen Softwareentwickler.

Antworten
Lukinator
  • Forum-Beiträge: 2.519

29.08.2013, 13:22:57 via App

and dev
Ist deine Tastatur kaputt?
Oder respektierst du die Mitleser hier so wenig das es dir egal ist, wenn die deinen Text 3 mal lesen müssen um ihn zu verstehen?

Wieso musst du so oft lesen?Ich habe das beim ersten Lesen verstanden.

Challenger me von Quizduell : yolopolooreo
(Schreibt mir dann da auch euren AndroidPIT Namen :D )

Antworten
Babette R.
  • Forum-Beiträge: 239

29.08.2013, 14:00:32 via Website

Da ist and dev nicht der einzige. Ohne grundlegendste Satzzeichen wie Komma und Punkt ist der Text sehr sehr schwer zu lesen und damit zu verstehen.

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

29.08.2013, 17:53:22 via Website

Schliesse mich an. Wenn ich es nicht verstehe, beantworte ich es nicht, denk mir aber im stillen :bored: ... Ist der jenige jemals auf die Idee gekommen zu überlegen wie jemand der das genaue Problem nicht kennt dies verstehen soll ?

— geändert am 29.08.2013, 17:53:51

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
San Blarnoi
  • Forum-Beiträge: 2.545

29.08.2013, 19:01:16 via Website

Wieso musst du so oft lesen?Ich habe das beim ersten Lesen verstanden.
:grin:
Leichte Übertreibungen sind ein Stilmittel, mit dem ich insgesamt gute Erfahrungen gemacht habe.

Du willst jetzt nicht wirklich mit mir über die Sinnhaftigkeit der Beregelung schriftlicher Kommunikationsformen diskutieren, oder?
"Komm wir essen Oma" wäre da ein gern genommenes Beispiel - sind hier Kannibalen unterwegs, oder handelt es sich um eine Aufforderung an die Oma, sich zum Esstisch zu begeben?

Wenn du die besagten Beiträge mit den anderen in diesem Thread vergleichst, kannst du die alle gleich schnell lesen/verstehen?
Wenn du schriftlich um Hilfe ersuchst, ist dir dann nicht daran gelegen, diese auch zu erhalten?
Ist die Erfüllung dieses Wunsches wahrscheinlicher, wenn du deine Frage in einer "eigenen Sprache" formulierst, oder wenn du einen (sich an die Regeln schriftlicher Kommunikation haltenden und darum) leicht verständlichen Beitrag verfasst, den die Leute auch lesen mögen?
Der Beitrag von Mac bringt diesen Aspekt auf den Punkt.

Antworten
Michele
  • Forum-Beiträge: 1.525

29.08.2013, 19:08:28 via Website

Lukinator
Wieso musst du so oft lesen?Ich habe das beim ersten Lesen verstanden.

Wegen so einem mist schreibst du hier einen Beitrag?
Nichts besseres zutun? Hier wird Hilfe gesucht. Keine Infos über dich selbst.

Da haben Mac und Dev schon recht :bashful:


Zum Thema:@Lucas@ Wie schon gesagt wurde, nimm float anstatt int.


LG

— geändert am 29.08.2013, 19:08:45

Antworten
San Blarnoi
  • Forum-Beiträge: 2.545

29.08.2013, 22:29:51 via Website

Wie schon gesagt wurde, nimm float anstatt int.

Meine Beiträge nicht gelesen?

Oder kannst du begründen, warum eine float Lösung besser wäre als meine int Lösung?

Antworten
Michele
  • Forum-Beiträge: 1.525

29.08.2013, 22:33:19 via Website

Dev: Du musst nicht zu jedem kram ein doofen Satz schreiben.:P

Schriebst doch oben selbst das float mehr bringen würde in meisten fällen.
Und wie es aussieht hat er ja gar nichts davon mal versucht.


LG

Antworten
San Blarnoi
  • Forum-Beiträge: 2.545

30.08.2013, 09:25:54 via Website

Schriebst doch oben selbst das float mehr bringen würde in meisten fällen.

Wo schreibe ich das denn?
Ist mir schon öfter aufgefallen das du Dinge kommentierst, die du entweder nicht [richtig] gelesen (wie in diesem Fall) oder nicht verstanden hast.

Wenn du dann auch noch die Mitleser anpflaumst, macht es die Sache nicht weniger peinlich.


Und wie es aussieht hat er ja gar nichts davon mal versucht.

Hättest du wenigstens die Beiträge des TE gelesen, dann hättest du das auch nicht geschrieben:
"Meinst du mit Falsch Rechnen diese übertrieben langen decimal Zahlen" [Lucas]
Offensichtlich hat er die float Lösung probiert und das Problem ekannt.

— geändert am 30.08.2013, 09:35:42

Antworten