31. december 2006 - 13:49Der er
7 kommentarer og 1 løsning
metode til at tjekke om parranteser er sat rigtigt i en string
Skal lave en metode de rtjekker om der er sat parranteser rigtigt i en tekst string har brug for lidt hjælp. her tjekket for om der er lige mange start og slut parranteser. men nu er jeg gået i stå.
Så når der ses en højreparantes skal der altid være sat mindst lige så mange venstreparanteser som der er sat højreparanteser til og med dette tegn?
Det kunne se således ud: public boolean countParantheses(String s) { int numberRight = 0; int numberLeft = 0; for (int i = 0; i < s.length(); i++ ) { char c = s.charAt(i); if (c == '(') numberLeft++; else if (c == ')') numberRight++; if (numberRight > numberLeft) return false; } return true; }
antal=0 Løb strengen igennem fra venstre mod højre Mødes en ( så antal++; Mødes en ) så antal--; Undervejs må antal aldrig blive negativ. Tilsidst skal antal være 0
Den løber en streng igennem og returnerer false hvis der opdages en højreparentes på et tidspunkt hvor der ikke tidligere er sat en venstreparantes (altså fx hvis højreparantes nummmer 6 sættes når der kun er set 5 venstreparanteser...)
public class Test{ public static boolean countParantheses(String s) { int numberRight = 0; int numberLeft = 0; for (int i = 0; i < s.length(); i++ ) { char c = s.charAt(i); if (c == '(') numberLeft++; else if (c == ')') numberRight++; if (numberRight > numberLeft) return false; } return true; }
public static void main(String args[]) { String s = "(hej hej)"; System.out.println(countParantheses(s)); s = ")hej hej("; System.out.println(countParantheses(s)); } }
Hvis du ydermere vil have at der skal være lige mange venstre- og højreparanteser (det vil du jo nok, når jeg tænker mig om) kan du teste for dette til sidst:
public boolean countParantheses(String s) { int numberRight = 0; int numberLeft = 0; for (int i = 0; i < s.length(); i++ ) { char c = s.charAt(i); if (c == '(') numberLeft++; else if (c == ')') numberRight++; if (numberRight > numberLeft) return false; } return numberRight == numberLeft; }
super manglede faktisk kun linien med if (numberRight > numberLeft)
Synes godt om
Ny brugerNybegynder
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.