How to perform arithmetic operations on a variable?

Aritmetiske Operationer i Android med Java

29/07/1999

Rating: 4.07 (11237 votes)

At udvikle Android-apps kan virke som en kompleks opgave, men ved at bryde processen ned i mindre, håndterbare trin, kan selv begyndere skabe funktionelle applikationer. Et af de mest grundlæggende, men essentielle, aspekter af app-udvikling er evnen til at modtage input fra en bruger, behandle disse data og præsentere et resultat. Dette involverer ofte simple aritmetiske operationer – addition, subtraktion, multiplikation og division. I denne dybdegående artikel vil vi guide dig trin for trin gennem processen med at bygge en simpel vægtomregner-app i Android Studio ved hjælp af Java. Vi vil dække alt fra opbygning af brugergrænsefladen til at skrive den logik, der udfører beregningerne og viser outputtet for brugeren. Ved slutningen af denne guide vil du have en solid forståelse af, hvordan man manipulerer variabler og data i en Android-app.

Indholdsfortegnelse

Forberedelse: Opbygning af Brugergrænsefladen (UI)

Før vi kan skrive en eneste linje Java-kode, har vi brug for en brugergrænseflade, hvor brugeren kan interagere med vores app. I Android udvikles brugergrænseflader typisk ved hjælp af XML-filer, som findes i `res/layout` mappen i dit projekt. For vores vægtomregner-app er målet at skabe en simpel, men intuitiv, skærm.

Vi skal bruge følgende komponenter:

  • EditText: Et tekstfelt, hvor brugeren kan indtaste en numerisk værdi (f.eks. vægten i kilogram).
  • Button: En knap, som brugeren kan trykke på for at starte beregningen.
  • TextView: (Valgfrit) Et tekstfelt til at vise en etiket eller instruktioner. Vi vil i stedet fokusere på at vise resultatet via en pop-op-besked.

For at organisere disse elementer pænt på skærmen, benytter vi os af `LinearLayout`. Dette layout arrangerer elementerne enten horisontalt eller vertikalt. Vi opretter to sektioner: en til at konvertere fra kilogram til pund og en anden til at konvertere fra pund til kilogram. Dette giver en klar og struktureret brugeroplevelse.

Eksempel på XML-layout

Her er et forenklet eksempel på, hvordan en del af din `activity_main.xml` fil kunne se ud for den første konvertering (kg til pund):

<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="16dp"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Indtast vægt i Kilogram (Kg)" /> <EditText android:id="@+id/editTextKg" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="numberDecimal" android:hint="f.eks. 75.5" /> <Button android:id="@+id/btnKgToPounds" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Omregn til Pund" android:onClick="convertKgToPounds" /> </LinearLayout>

Bemærk attributten `android:onClick="convertKgToPounds"` i knappen. Dette er en afgørende del, da den forbinder et tryk på knappen direkte med en specifik Java-metode i vores `MainActivity.java` fil.

Kernen i Appen: Logikken i MainActivity.java

Nu hvor vores brugergrænseflade er på plads, er det tid til at bringe den til live med Java-kode. Al logik, der styrer vores hovedskærm, vil blive skrevet i filen `MainActivity.java`. Her vil vi definere metoderne, der reagerer på brugerens handlinger.

Trin 1: Hent data fra tekstfeltet

Det første skridt i vores konverteringsmetode er at få fat i den værdi, brugeren har indtastet. Dette gøres ved at finde den specifikke `EditText`-komponent via dens unikke ID, som vi definerede i XML-filen.

Først opretter vi en reference til vores `EditText`-felt. Vi bruger metoden `findViewById`, som gennemsøger vores layout-fil for en komponent med det angivne ID.

Koden ser således ud:

EditText editTextKg = (EditText) findViewById(R.id.editTextKg);

Nu indeholder variablen `editTextKg` en reference til selve tekstfeltet, men endnu ikke den tekst, der er indtastet i det.

Trin 2: Konvertering af datatyper

Den data, vi henter fra et `EditText`-felt, er som udgangspunkt en `Editable`-type, som nemt kan konverteres til en `String` (tekststreng). Men for at udføre matematiske beregninger har vi brug for et numerisk dataformat, såsom `Double`, der kan håndtere decimaltal.

Processen er derfor i to trin:

  1. Fra EditText til String: Vi kalder `getText()` på vores `EditText`-variabel for at få indholdet og derefter `toString()` for at sikre, at det er en standard `String`.
  2. Fra String til Double: Vi bruger en indbygget Java-metode, `Double.parseDouble`, til at omdanne tekststrengen til et `Double`-tal.

Vi kan kombinere disse trin i én effektiv linje kode for at gøre det mere kompakt:

double vaerdiKg = Double.parseDouble(editTextKg.getText().toString());

Nu har vi brugerens input gemt i variablen `vaerdiKg` som et `Double`-tal, klar til at blive brugt i en beregning. Det er vigtigt at bemærke, at hvis brugeren indtaster noget, der ikke er et tal (f.eks. "hej"), vil appen gå ned med en `NumberFormatException`. I en mere avanceret app ville man implementere fejlhåndtering (try-catch blokke) for at forhindre dette.

Trin 3: Udførelse af den aritmetiske operation

Dette er selve kernen i vores omregner. Vi ved, at 1 kilogram er cirka lig med 2.20462 pund. For at konvertere fra kilogram til pund skal vi derfor blot multiplicere den indtastede værdi med denne faktor. I Java, ligesom i de fleste andre programmeringssprog, bruger vi standard aritmetiske operatorer som `+`, `-`, `*` (multiplikation) og `/` (division).

Beregningen er simpel:

double resultatPund = vaerdiKg * 2.20462;

Resultatet af beregningen gemmes nu i en ny `Double`-variabel ved navn `resultatPund`.

Trin 4: Visning af output med en 'Toast'

Nu hvor vi har vores resultat, skal vi vise det for brugeren. En af de nemmeste og hurtigste måder at vise en kort besked på i Android er ved hjælp af en `Toast`. En Toast er en lille pop-op-besked, der vises i kort tid nederst på skærmen og derefter forsvinder af sig selv. Det er perfekt til bekræftelser eller simple resultater.

For at oprette en Toast bruger vi `Toast.makeText()`-metoden, som kræver tre parametre:

ParameterBeskrivelseEksempel
ContextReferencen til den nuværende app-kontekst eller aktivitet. Inde i en aktivitet kan vi blot bruge `this` eller `getApplicationContext()`.`getApplicationContext()`
TextDen tekst, der skal vises. Vi kan kombinere en fast tekststreng med vores beregnede resultat.`"Resultat: " + resultatPund + " pund"`
DurationHvor længe beskeden skal vises. Dette kan være enten `Toast.LENGTH_SHORT` eller `Toast.LENGTH_LONG`.`Toast.LENGTH_LONG`

Efter at have bygget vores Toast, skal vi kalde `.show()` metoden for rent faktisk at vise den på skærmen.

Toast.makeText(getApplicationContext(), "Resultat: " + resultatPund + " pund", Toast.LENGTH_LONG).show();

Den komplette metode

Når vi samler alle trinene, ser vores `convertKgToPounds` metode, som kaldes via `onClick`, således ud:

public void convertKgToPounds(View view) { EditText editTextKg = (EditText) findViewById(R.id.editTextKg); // Tjek om feltet er tomt for at undgå crash if (editTextKg.getText().toString().isEmpty()) { Toast.makeText(this, "Indtast venligst en værdi", Toast.LENGTH_SHORT).show(); return; } double vaerdiKg = Double.parseDouble(editTextKg.getText().toString()); double resultatPund = vaerdiKg * 2.20462; // Formater output til to decimaler for pænere visning String formateretResultat = String.format("%.2f", resultatPund); Toast.makeText(this, vaerdiKg + " kg er lig med " + formateretResultat + " pund", Toast.LENGTH_LONG).show(); }

For at fuldende appen skulle du blot oprette en tilsvarende metode, `convertPoundsToKg`, der udfører den omvendte beregning (division med 2.20462 eller multiplikation med 1/2.20462) og kalder den fra den anden knap i din brugergrænseflade.

Ofte Stillede Spørgsmål (FAQ)

Hvorfor skal input konverteres til en `Double`? Kan man ikke regne med en `String`?

Nej, aritmetiske operationer som multiplikation kan ikke udføres direkte på tekststrenge (`String`). En `String` er en sekvens af tegn, mens en `Double` er en numerisk datatype designet til at håndtere tal, inklusiv decimaler. Derfor er det nødvendigt at "parse" eller konvertere strengen til en numerisk type, før beregninger kan finde sted.

Hvad sker der, hvis brugeren ikke indtaster noget og trykker på knappen?

Hvis tekstfeltet er tomt, vil `editTextKg.getText().toString()` returnere en tom streng. Når `Double.parseDouble("")` forsøger at konvertere en tom streng, vil appen crashe med en `NumberFormatException`. Derfor er det god praksis at inkludere en simpel validering, som tjekker, om strengen er tom, før man forsøger at konvertere den, som vist i det komplette metodeeksempel ovenfor.

Er en Toast den eneste måde at vise resultatet på?

Absolut ikke. En `Toast` er god til hurtige beskeder, men resultatet kan også vises mere permanent. En almindelig metode er at inkludere en `TextView` i dit layout og derefter opdatere dens tekst dynamisk ved hjælp af metoden `setText()`. For eksempel: `resultTextView.setText("Resultat: " + formateretResultat + " pund");`.

Hvad er `findViewById` og findes der alternativer?

`findViewById` er den traditionelle måde i Android at få en reference til et UI-element (en "View") fra XML-layoutet. Selvom den stadig er funktionel, anses den i moderne Android-udvikling for at være lidt forældet. Nyere og mere effektive metoder som View Binding og Data Binding anbefales, da de eliminerer behovet for `findViewById`-kald og giver typesikkerhed, hvilket reducerer risikoen for fejl.

Hvis du vil læse andre artikler, der ligner Aritmetiske Operationer i Android med Java, kan du besøge kategorien Sundhed.

Go up