gebruik van String.equals(" ")

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • granitk7
  • Registratie: Augustus 2014
  • Laatst online: 06-12-2024
Ik probeer iets werkend te krijgen in Android studio maar heb lukt mij niet helemaal. De bedoeling is om afhankelijk van in welke Edittext je iets invult een bepaalde berekening te doen en dat antwoord ook weer in een bepaalde Edittext te krijgen te krijgen.

Dus bijvoorbeeld:
A = B + C
B = A - C
C = A - B

Ik dacht dit te kunnen doen door aan te geven dat als een bepaalde Edittext leeg is deze moet worden berekend.

Ik heb daar eerste de methode String.isEmpty voor gevonden maar deze lijkt Android studio niet te kennen. In plaats daarvan heb ik String.equals(" ") gebruikt. Het probleem is nu dat deze methode niet werkt voor mij. Er gebeurt iets heel raars, waarbij zelfs de Edittext velden die je hebt ingevuld van waardes veranderen.

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  if (totalTxt.equals("")); {

            float percentage = Float.parseFloat(percentageTxt.getText().toString());
                    float getal = percentage / 100;
                    float total = getal * Float.parseFloat(getalTxt.getText().toString());
                    totalTxt.setText(Float.toString(total));

                }

                if( percentageTxt.equals("")); {
                    float total1 = Float.parseFloat(totalTxt.getText().toString());
                    float getal1 = total1 / Float.parseFloat(getalTxt.getText().toString());
                    float percentage1 = getal1 * 10;
                    percentageTxt.setText(Float.toString(percentage1));

                }

                if ( getalTxt.equals("")); {
                    float total2 = Float.parseFloat(totalTxt.getText().toString());
                    float percentage2 = Float.parseFloat(percentageTxt.getText().toString()) / 100;
                    float getal2 = total2 * percentage2;
                    getalTxt.setText(Float.toString(getal2));
                }


Is dit de goede methode om het werkend te krijgen, maar heb ik ergens een fout gemaakt of moet ik iets anders gaan proberen?

[ Voor 3% gewijzigd door granitk7 op 28-11-2016 20:11 ]


Acties:
  • +2 Henk 'm!

  • Rhapsody
  • Registratie: Oktober 2002
  • Laatst online: 10-10 08:45

Rhapsody

In Metal We Trust

Na elke if () heb je een ; staan.

Die hoort daar niet.

Ik ben verder niet zo bekend met Android ontwikkeling, maar moet je in de if ook niet gettext aanroepen op het betreffende tekstveld?

[ Voor 54% gewijzigd door Rhapsody op 28-11-2016 20:17 ]

🇪🇺 pro Europa! | Puinhoop Veroorzaken en Vertrekken (PVV)


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Rhapsody schreef op maandag 28 november 2016 @ 20:16:
Ik ben verder niet zo bekend met Android ontwikkeling, maar moet je in de if ook niet gettext aanroepen op het betreffende tekstveld?
Bij regulier Java zou je inderdaard totalTxt.getText().equals("") verwachten (of .isEmpty() of .length() == 0), lijkt me dat dat bij Android ook moet. Nu vergelijkt het of het Edittext-object zelf gelijk is aan een lege string (nee, nooit), ipv de inhoud ervan (soms).

Acties:
  • 0 Henk 'm!

  • jip_86
  • Registratie: Juli 2004
  • Laatst online: 10-10 11:40
Levert getText() al niet een string op? Dan is tostring elke keer een beetje dubbel op.

Acties:
  • 0 Henk 'm!

  • hellum
  • Registratie: Oktober 2007
  • Laatst online: 07-10 10:47
Geen Java of Android expert, maar 2 dingen

if ( getalTxt.equals("")); Die ; hoort daar niet en in de rest van de code gebruik je getatTxt.getText() , probeer eens getalTxt.getText().equals(""). Anders kijk je of het hele object gelijk is aan een lege string.

Acties:
  • 0 Henk 'm!

  • granitk7
  • Registratie: Augustus 2014
  • Laatst online: 06-12-2024
Bedankt voor jullie reacties.

Ik heb jullie suggesties geprobeerd, maar ik krijg het niet werkend. Als ik de ; weghaal dan gebeurt er niets als ik op de button klik.

Als ik er dit van maak dan voert hij als ik iets bij percentageTxt of getalTxt invul iets heel anders in bij totalTxt of hij crashed als je niets invuld bij percentageTxt of getalTxt.

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
  Button calcBtn = (Button) findViewById(R.id.calcBtn);
        calcBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (totalTxt.getText().equals("")) {

                    float percentage = Float.parseFloat(percentageTxt.getText().toString());
                    float getal = percentage / 100;
                    float total = getal * Float.parseFloat(getalTxt.getText().toString());
                    totalTxt.setText(Float.toString(total));

                }

                if( percentageTxt.getText().equals("")) {
                    float total1 = Float.parseFloat(totalTxt.getText().toString());
                    float getal1 = total1 / Float.parseFloat(getalTxt.getText().toString());
                    float percentage1 = getal1 * 10;
                    percentageTxt.setText(Float.toString(percentage1));

                }

                if ( getalTxt.getText().equals("")) {
                    float total2 = Float.parseFloat(totalTxt.getText().toString());
                    float percentage2 = Float.parseFloat(percentageTxt.getText().toString()) / 100;
                    float getal2 = total2 * percentage2;
                    getalTxt.setText(Float.toString(getal2));
                }

Acties:
  • 0 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 22:14
granitk7 schreef op dinsdag 29 november 2016 @ 20:47:
Bedankt voor jullie reacties.

Ik heb jullie suggesties geprobeerd, maar ik krijg het niet werkend. Als ik de ; weghaal dan gebeurt er niets als ik op de button klik.

Als ik er dit van maak dan voert hij als ik iets bij percentageTxt of getalTxt invul iets heel anders in bij totalTxt of hij crashed als je niets invuld bij percentageTxt of getalTxt.

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
  Button calcBtn = (Button) findViewById(R.id.calcBtn);
        calcBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (totalTxt.getText().equals("")) {

                    float percentage = Float.parseFloat(percentageTxt.getText().toString());
                    float getal = percentage / 100;
                    float total = getal * Float.parseFloat(getalTxt.getText().toString());
                    totalTxt.setText(Float.toString(total));

                }

                if( percentageTxt.getText().equals("")) {
                    float total1 = Float.parseFloat(totalTxt.getText().toString());
                    float getal1 = total1 / Float.parseFloat(getalTxt.getText().toString());
                    float percentage1 = getal1 * 10;
                    percentageTxt.setText(Float.toString(percentage1));

                }

                if ( getalTxt.getText().equals("")) {
                    float total2 = Float.parseFloat(totalTxt.getText().toString());
                    float percentage2 = Float.parseFloat(percentageTxt.getText().toString()) / 100;
                    float getal2 = total2 * percentage2;
                    getalTxt.setText(Float.toString(getal2));
                }
Waar worden getalTxt, totalTxt en percentageTxt geïnitialiseerd? Ik zie nergens je ze uit je View halen, zijn die dingen wel daadwerkelijk opgehaald? Debug eens door je functies heen en check of alle variabelen wel zijn wat je verwacht.

Acties:
  • 0 Henk 'm!

  • DaCoTa
  • Registratie: April 2002
  • Laatst online: 12:42
Java heeft over het algemeen goede stacktraces, wat zegt hij precies als hij 'crashed'? En waar wijst de stacktrace je naartoe?

Acties:
  • 0 Henk 'm!

Verwijderd

Volgens mij wil je de logica alleen uitvoeren als er iets in gevuld.

Dus volgens mij vergeet je een not in je if statements.


Niet goed gelezen...


Je bepaalt aan de hand van welk textbox leeg is, welke berekening je uitvoert, maar als er twee van de drie leeg zijn, gaat het -met deze code- gegarandeerd fout.

Ik zou wat documentatie lezen over parseFloat en wellicht try..catch.

[ Voor 67% gewijzigd door Verwijderd op 30-11-2016 10:48 ]


Acties:
  • 0 Henk 'm!

  • Standeman
  • Registratie: November 2000
  • Laatst online: 20:10

Standeman

Prutser 1e klasse

En sowieso "".equals(string) ipv string.euqals("") gebruiken. Scheelt nullpointers als string null is ;)

Tenzij je die nullpointers juist wil natuurlijk..

[ Voor 20% gewijzigd door Standeman op 30-11-2016 10:52 ]

The ships hung in the sky in much the same way that bricks don’t.


Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 06-10 13:59
Standeman schreef op woensdag 30 november 2016 @ 10:50:
Tenzij je die nullpointers juist wil natuurlijk..
Of je gewoon zoals het hoort zorgt dat een object niet null kan zijn ;) Niks mis overigens met yoda-conditions voor input die nog gevalideerd moet worden maar over het algemeen wil je z.s.m. zorgen dat objecten niet null kunnen zijn.

[ Voor 35% gewijzigd door Hydra op 30-11-2016 14:56 ]

https://niels.nu


Acties:
  • 0 Henk 'm!

  • bokeoke12
  • Registratie: Maart 2014
  • Laatst online: 23-09 13:35
if(TextUtils.isEmpty(totalTxt.getText())) {
float percentage = Float.parseFloat(percentageTxt.getText().toString());
float getal = percentage / 100;
float total = getal * Float.parseFloat(getalTxt.getText().toString());
totalTxt.setText(Float.toString(total));
}

Werkt dit ook niet?

Acties:
  • 0 Henk 'm!

Verwijderd

Het is niet zo raar dat de waarden die je invult veranderen, want dat is al wat je omschrijft in je openingspost.

A is afhankelijk van C en C is afhankelijk van A.

Verder is het inderdaad good practice om TextUtils.isEmpty() te gebruiken zoals hierboven al staat.

Andere vraag: wat ben je eigenlijk aan het maken?

Acties:
  • 0 Henk 'm!

  • granitk7
  • Registratie: Augustus 2014
  • Laatst online: 06-12-2024
bokeoke12 schreef op woensdag 30 november 2016 @ 18:44:
if(TextUtils.isEmpty(totalTxt.getText())) {
float percentage = Float.parseFloat(percentageTxt.getText().toString());
float getal = percentage / 100;
float total = getal * Float.parseFloat(getalTxt.getText().toString());
totalTxt.setText(Float.toString(total));
}

Werkt dit ook niet?
Dit werkt bedankt! Overigens stonden er nog een paar kleine fouten in bij mij.

Als je totalTxt wilde berekenen gaf die raar genoeg nooit een probleem. Hij wilde alleen nooit die if uitvoeren.

Zo ziet die er nu uit.
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
               if(TextUtils.isEmpty(totalTxt.getText())) {
                    float percentage = Float.parseFloat(percentageTxt.getText().toString());
                    float getal = percentage / 100;
                    float total = getal * Float.parseFloat(getalTxt.getText().toString());
                    totalTxt.setText(Float.toString(total));

                }

                if(TextUtils.isEmpty(percentageTxt.getText())) {
                        float total1 = Float.parseFloat(totalTxt.getText().toString());
                        float getal1 = total1 / Float.parseFloat(getalTxt.getText().toString());
                        float percentage1 = getal1 * 100;
                        percentageTxt.setText(Float.toString(percentage1));
                    }

                if(TextUtils.isEmpty(getalTxt.getText())) {
                    float total2 = Float.parseFloat(totalTxt.getText().toString());
                    float percentage2 = Float.parseFloat(percentageTxt.getText().toString()) / 100;
                    float getal2 = total2 / percentage2;
                    getalTxt.setText(Float.toString(getal2));
                }


Overigens probeer ik er ook nog een toast bij toegevoegd die error zegt als er iets anders gebeurt dan dit hierboven, maar nu komt die toast message elke keer tevoorschijn als ik op bereken druk.

Java:
1
2
3
4
5
6
7
8
                 else {
                    Context context = getApplicationContext();
                    CharSequence text = "Error";
                    int duration = Toast.LENGTH_LONG;

                    Toast toast = Toast.makeText(context, text, duration);
                    toast.show();
                }
Verwijderd schreef op woensdag 30 november 2016 @ 23:40:

Verder is het inderdaad good practice om TextUtils.isEmpty() te gebruiken zoals hierboven al staat.

Andere vraag: wat ben je eigenlijk aan het maken?
Ik ben aan het leren hoe je moet programmeren. Ik kijk dus ook veel tutorials op Youtube en daarin maakt iemand een app die als je een percentage en een getal invulde het antwoord dan uitrekende. Nu wilde ik dat dus zelf verder uitbreiden met nog een aantal functies. Zoals met dit dus waarbij je niet alleen A kan uitreken, maar ook B en C.

[ Voor 13% gewijzigd door granitk7 op 01-12-2016 13:15 ]


Acties:
  • 0 Henk 'm!

  • bokeoke12
  • Registratie: Maart 2014
  • Laatst online: 23-09 13:35
Als je

code:
1
2
3
4
5
6
if{
}
if{
}
if {
}


hebt en vervolgens een else, geeft hij de else als het laatste if-statement niet waar is.

Je zou ook dit kunnen gebruiken:
code:
1
2
3
4
5
if {
} else if {
} else if {
} else {
}

Alleen zou je dan nooit 2 velden kunnen invullen (althans, dan wordt alleen de eerste berekend). Anders zal je de else na elk if-statement moeten zetten (en de toast via een losse methode openen).

[ Voor 17% gewijzigd door bokeoke12 op 01-12-2016 16:41 ]

Pagina: 1