Hilfe bei BMI Rechner

  • Antworten:5
  • Bentwortet
Imagine Box
  • Forum-Beiträge: 346

23.02.2013, 16:36:21 via Website

Hey Leute,

ich habe gerade angefangen zu programmieren und möchte nun anfangen eine App zu erstellen welche mir den BMI ausrechnet. Die Formel dazu ist ja Gewicht /Größe^2. Das Gewicht muss in KG angegeben werden und die Größe in Meter. Ich habe mir deshalb gedacht, eine double Variable zu verwenden wegen der Nachkommastellen. Momentan sieht es so aus:

1public class CalculateBMI extends Activity {
2
3 @Override
4 protected void onCreate(Bundle savedInstanceState) {
5 super.onCreate(savedInstanceState);
6 setContentView(R.layout.activity_calculate_bmi);
7 }
8
9 @Override
10 public boolean onCreateOptionsMenu(Menu menu) {
11 // Inflate the menu; this adds items to the action bar if it is present.
12 getMenuInflater().inflate(R.menu.calculate_bmi, menu);
13 return true;
14 }
15 public void ButtonKlick (View view) {
16 double g;
17 double l;
18 double BMI;
19 EditText Feld1 = (EditText)findViewById(R.id.eTgewicht);
20 EditText Feld2 = (EditText)findViewById(R.id.eTgroesse);
21 EditText FeldBMI = (EditText)findViewById(R.id.etErgebnis);
22 if (Feld1.getText().toString().length() == 0) {
23 return;
24 }
25 if (Feld2.getText().toString().length() == 0) {
26 return;
27 }
28 g = Feld1.getText().toString(); // g steht für gewicht
29 l = Feld2.getText().toString(); // l steht für Länge
30 BMI = g/(l*l);
31
32 FeldBMI.setText(String.valueOf(BMI));
33 }
34
35}
Leider klappt das ganze nicht :( Er zeigt mir
1g = Feld1.getText().toString();
2l = Feld2.getText().toString();
rot unterstrichen an. Als Fehlermeldung kommt "Change type of `g´ to `String´".

Falls es ein extrem dummer Fehler ist, bitte ich dies zu entschuldigen. Jeder fängt mal klein an :)

LG,
Henny

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

23.02.2013, 16:38:36 via Website

Als hilfe: "85" ist keine Zahl sonder ein String. Was du machen muss ist das umwandeln. Double bietet z.b Double.parseString("99")

hth,
Mac

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

Antworten
Imagine Box
  • Forum-Beiträge: 346

23.02.2013, 16:43:32 via Website

Danke für die schnelle Antwort!
Heißt das also dann:
1l = Double.parseString("99");
oder
1g = Double.parseString(Feld1.getText().toString();

ich hatte vorher (noch mit Integer Variablen):
1g = Integer.parseInt(Feld1.getText().toString());
stehen. Ist das ungefähr das Selbe oder wie darf ich das verstehen?

— geändert am 23.02.2013, 16:46:43

Antworten
Enrico
  • Forum-Beiträge: 33

23.02.2013, 19:11:47 via App

genau alle drei snippets funktionieren gleich nur halt mit einem anderen variablen typ.

Antworten
Imagine Box
  • Forum-Beiträge: 346

23.02.2013, 19:45:53 via Website

Danke. Ich habe zwar die angezeigten Fehler wegbekommen aber leider funktioniert die App immer noch nicht :(
Egal was ich eingebe, die App gibt immer 0,005101... aus. Das kommt nicht wirklich hin, korrekt wären 16.514. Weiß noch jemand Rat?

Antworten
Imagine Box
  • Forum-Beiträge: 346

23.02.2013, 19:48:13 via Website

Hat sich erledigt, habe den Fehler gefunden ;) Vielen Dank an alle Helfer!

Antworten