Einfaches Programm mit Berechnung

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Einfaches Programm mit Berechnung

    Hallo zusammen,
    ich habe hier ein komplettes Beispiel wo folgendes gemacht wird:
    strukturiertes Eingabefenster im XML-Editor
    Daten eingegeben im EditText
    Zugriff auf die Daten als Zahlenwerte
    einfache Berechnungen mit den Daten
    Ausgabe der Ergebnisse im EditText
    Zugriff auf die Text-Resource aus dem Programm
    einfache Plausibilitaetpruefung der Benutzereingaben


    Grundlage ist das "Hello World" Programm, das automatisch erzeugt wird. Den Namen habe ich in MyCalcApplication geaendert.
    danach die Dateien mit den hier aufgefuerten Code-Schnippseln fuellen.


    Die Ausgabe erscheint bei mir im Emulator. Alle Felder (ausser den beiden Eingaben) sind gesperrt. Die beiden Eingabe akzeptieren nur Zahlen, und leider auch eine leere Eingabe, wenn der User den Vorgabewert loescht. Das ist im Programm abgefangen.
    Wenn eine des Eingaben angeklickt wird, erscheint ein Softkeyboard mit Zahlen. Fals nicht erscheint unten im Handy-Gehaeuse ein Keyboard-Symbol. Dord druecken und waehlen. Leider habe ich schon vergessen was zu waehlen ist. Bitte probieren.


    Ich hoffe, das viele Fragen die ich im Forum lese (oder die ungefragt mitkommen) mit diesem Beispiel beantwortet werden.
    Viel Erfolg
    MarkNeb

    Quellcode: activity_main.xml

    1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    2. xmlns:tools="http://schemas.android.com/tools"
    3. android:layout_width="match_parent"
    4. android:layout_height="match_parent"
    5. android:orientation="vertical"
    6. android:weightSum="1">
    7. <!-- diesen Platz erscheint noetig -->
    8. <Space
    9. android:layout_width="20px"
    10. android:layout_height="20px" />
    11. <!-- erste Eingabezeile -->
    12. <TableRow
    13. android:layout_width="match_parent"
    14. android:layout_height="wrap_content">
    15. <EditText
    16. android:text="Ihre Groesse in cm :"
    17. android:layout_width="0dp"
    18. android:layout_height="wrap_content"
    19. android:layout_gravity="center_horizontal"
    20. android:layout_weight="1"
    21. android:textIsSelectable="false"
    22. android:editable="false"
    23. android:clickable="false" />
    24. <EditText
    25. android:layout_width="wrap_content"
    26. android:layout_height="wrap_content"
    27. android:inputType="number"
    28. android:ems="3"
    29. android:id="@+id/editGroesse"
    30. android:editable="true"
    31. android:clickable="true"
    32. android:enabled="true"
    33. android:text="@string/def_groesse" />
    34. </TableRow>
    35. <!-- zweite Eingabezeile -->
    36. <TableRow
    37. android:layout_width="match_parent"
    38. android:layout_height="wrap_content">
    39. <EditText
    40. android:text="Ihr Gewicht in kg :"
    41. android:layout_width="0dp"
    42. android:layout_height="wrap_content"
    43. android:layout_gravity="center_horizontal"
    44. android:layout_weight="1"
    45. android:editable="false"
    46. android:textIsSelectable="false"
    47. android:clickable="false" />
    48. <EditText
    49. android:layout_width="wrap_content"
    50. android:layout_height="wrap_content"
    51. android:inputType="number"
    52. android:ems="3"
    53. android:id="@+id/editGewicht"
    54. android:editable="true"
    55. android:clickable="true"
    56. android:enabled="true"
    57. android:text="@string/def_gewicht" />
    58. </TableRow>
    59. <Space
    60. android:layout_width="20px"
    61. android:layout_height="50px" />
    62. <!-- beim Click wird die Funktion RechneBmi aufgerufen siehe MainActivity.java-->
    63. <Button
    64. android:layout_width="match_parent"
    65. android:layout_height="wrap_content"
    66. android:text="Berechne"
    67. android:onClick="RechneBmi" />
    68. <!-- Ausgabezeile -->
    69. <TableRow
    70. android:layout_width="match_parent"
    71. android:layout_height="wrap_content">
    72. <EditText
    73. android:text="Ihr Body-Mass-Index :"
    74. android:layout_width="0dp"
    75. android:layout_height="wrap_content"
    76. android:layout_gravity="center_horizontal"
    77. android:layout_weight="1"
    78. android:editable="false"
    79. android:textIsSelectable="false"
    80. android:clickable="false" />
    81. <EditText
    82. android:layout_width="wrap_content"
    83. android:layout_height="wrap_content"
    84. android:ems="5"
    85. android:id="@+id/editBmi"
    86. android:text=".??."
    87. android:textIsSelectable="false"
    88. android:editable="false"
    89. android:clickable="false" />
    90. </TableRow>
    91. </LinearLayout>
    Alles anzeigen



    Quellcode: strings.xml

    1. <resources>
    2. <string name="app_name">MyCalc Application</string>
    3. <string name="action_settings">Settings</string>
    4. <string name="def_groesse">160</string>
    5. <string name="def_gewicht">80</string>
    6. </resources>
    7. <!--action_settings kommt im Menue vor, wird hier aber nicht verwendet-->
    8. <!--der string def_groesse MUSS in eine Zahl wandelbar sein, KEINE Buchstaben usw.-->
    9. <!--der string def_gewicht natuerlich auch-->

    Quellcode: MainActivity.java

    1. package com.example.mark.mycalcapplication;
    2. import android.app.Activity;
    3. import android.os.Bundle;
    4. import android.view.Menu;
    5. import android.view.MenuItem;
    6. import android.view.View;
    7. import android.widget.EditText; // automatisch hinzugefuegt durch Alt+Enter (Cursor steht auf rotem Text)
    8. public class MainActivity extends Activity {
    9. @Override
    10. protected void onCreate(Bundle savedInstanceState) {
    11. super.onCreate(savedInstanceState);
    12. setContentView(R.layout.activity_main);
    13. }
    14. @Override
    15. public boolean onCreateOptionsMenu(Menu menu) {
    16. // Inflate the menu; this adds items to the action bar if it is present.
    17. getMenuInflater().inflate(R.menu.menu_main, menu);
    18. return true;
    19. }
    20. @Override
    21. public boolean onOptionsItemSelected(MenuItem item) {
    22. // Handle action bar item clicks here. The action bar will
    23. // automatically handle clicks on the Home/Up button, so long
    24. // as you specify a parent activity in AndroidManifest.xml.
    25. int id = item.getItemId();
    26. //noinspection SimplifiableIfStatement
    27. if (id == R.id.action_settings) {
    28. return true;
    29. }
    30. return super.onOptionsItemSelected(item);
    31. }
    32. // wird beim click des Sendebuttons aufgerufen. Zuordnung ueber den Namen im onClick-parameter
    33. public void RechneBmi(View viev){
    34. int gewicht = 0, groesse = 0, ibmi=0;
    35. double bmi=0.0 ;
    36. String MyText = "1211"; // Class fuer die Rueckgabewerte
    37. // Zugriff auf Zahleneingabe, damit werden die Eingabewerte verfuegbar
    38. EditText Groesse = (EditText) findViewById(R.id.editGroesse);
    39. EditText Gewicht = (EditText) findViewById(R.id.editGewicht);
    40. EditText Bmi = (EditText) findViewById(R.id.editBmi);
    41. // lese Eingaben und pruefe plausibilitaet
    42. // Groesse
    43. MyText = Groesse.getText().toString(); // hier steht die Eingabe als Text
    44. if (MyText.isEmpty()) { // User loescht die Vorgabe, dann gaebe es Aerger bei der Umwandlung
    45. MyText = "0";
    46. groesse = 0;} // hier wird die nachfolgende Abfrage ausgenutzt
    47. else groesse = Integer.valueOf(MyText); // hier wird die User-Eingabe verwendet
    48. if (groesse < 100 || groesse > 250) {
    49. MyText = getString(R.string.def_groesse); // Zugriff auf Text-Resource
    50. Groesse.setText(MyText); // schreibe zurueck ins Zahlenfeld
    51. groesse = Integer.valueOf(MyText); // korrigiere Zahlenwert
    52. };
    53. // Gewicht
    54. MyText = Gewicht.getText().toString();
    55. if (MyText.isEmpty()) {
    56. MyText = "0";
    57. gewicht =0;}
    58. else gewicht = Integer.valueOf(MyText);
    59. if (gewicht < 40 || gewicht > 400) {
    60. MyText = getString(R.string.def_gewicht); // Zugriff auf Text-Resource
    61. Gewicht.setText(MyText); // schreibe zurueck ins Zahlenfeld
    62. gewicht = Integer.valueOf(MyText); // korrigiere Zahlenwert
    63. };
    64. // valueOf() wandelt alles siehe http://developer.android.com/reference/java/lang/String.html
    65. //rechne
    66. bmi = gewicht * 100.0 * 100.0 / (groesse * groesse); // hier steht bmi als double
    67. ibmi = (int) (bmi*100.0); // begrenzung auf zwei Nachkommastellen
    68. bmi = ibmi /100.0;
    69. //ausgabe
    70. Bmi.setText(Double.toString(bmi)); // wandeln in string und zuweisen in Ausgabe
    71. }
    72. }
    Alles anzeigen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von MarkusNeb ()