Avatar billede tuba Nybegynder
09. november 2002 - 14:48 Der er 5 kommentarer og
1 løsning

array i switch

arrayet kan være følgende:
char[] fortegn = {'+', '-', '-', '*'}

har et gennemløb:
for(i=0; .......)

og i gennemløbet følgende switch-sætning
switch(fortegn['i'])
  {
    case '+' :
      resultat = resultat + talRaekke[i];
    break;

    case '-' :                        resultat = resultat - talRaekke[i];
    break;

    case '*' :                        resultat = resultat * talRaekke[i];
    break;

    case '/' :
    resultat = resultat / talRaekke[i];
    break;
  }

der sker det at den ikke vælger noget i switchsætningen. Hvis jeg laver arrayet om til integer array og casene om til henholdvis 1,2 osv så virker det. hvordan kan det være...man kan da bruge chars i en switchsætning ikke ?
Avatar billede arne_v Ekspert
09. november 2002 - 14:50 #1
Prøv og erstat

switch(fortegn['i'])
 
med

switch(fortegn[i])
Avatar billede tuba Nybegynder
09. november 2002 - 15:01 #2
ja det var en skrivefejl i indlægget...der skulle ikke stå switch(fortegn['i']) men switch(fortegn[i]) - det virker derfor stadig ikke.
Avatar billede arne_v Ekspert
09. november 2002 - 15:13 #3
Det bør virke !

public class Test {
    public static void main(String[] args) {
        char[] fortegn = {'+', '-', '-', '*'};
        int[] talRaekke = { 10, 2, 4, 2 };
        int resultat = 0;
        for(int i=0; i < fortegn.length; i++) {
          switch(fortegn[i]) {
              case '+' :
                  resultat = resultat + talRaekke[i];
                  break;

              case '-' :
                  resultat = resultat - talRaekke[i];
                  break;
              case '*' :
                  resultat = resultat * talRaekke[i];
                  break;
              case '/' :
                  resultat = resultat / talRaekke[i];
                  break;
            }
        } 
        System.out.println(resultat);
    }
}

Skriver 8 ud hos mig. Og det virker korrekt
da (0 + 10 - 2 - 4 ) * 2 = 8 !
Avatar billede tuba Nybegynder
09. november 2002 - 15:36 #4
ja ved ikke helt hvad der lige var sket...men nu virker det...tak for hjælpen !
Avatar billede arne_v Ekspert
09. november 2002 - 15:44 #5
Godt.

Vær opmærksom på at den algoritme du bruger
ikke følger de normale matematiske regler.

0+10-2-4*2 er jo matematisk 0, men din algoritme
opfatter udtrykket som (0+10-2-4)*2 som er 8.

Alt afhængig af din problem-stilling kan det være
et problem.
Avatar billede arne_v Ekspert
09. november 2002 - 15:46 #6
Hvis du skal være matematisk korrekt
skal du konvertere fra "infix" til
"postfix".

(0+10-2-4)*2 => 0 10 + 2 - 4 - 2 *
0+10-2-4*2 => 0 10 + 2 - 4 2 * -
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester