Empty Skrevet 20. oktober 2006 Skrevet 20. oktober 2006 Sitter å holder på å laget et program her, men får problem med en while setning: while (test == true) { for (i = 0; i >= helTekst.length(); i = i + 1) { if (delTekst.charAt(k) == helTekst.charAt(i)) { test = true; k = k + 1; } else { test = false; } } } Fjerner jeg while setningen så funker den, men ikke helt som den skal... Noen som kan se et problem?
HighTower Skrevet 20. oktober 2006 Skrevet 20. oktober 2006 Har du initialisert test variablen til true før løkka starter? du kan enkelt se hvor løkka stopper ved å legge inn noen system.out.printlin() på forskjellige steder
Empty Skrevet 20. oktober 2006 Forfatter Skrevet 20. oktober 2006 (endret) Det har jeg også gjort. Bruker Ecplise, men den bare hopper kontant ut av programmet... Skjønner ingenting... Har også prøvd med do-while også men det funka heller ikke. Endret 20. oktober 2006 av Empty
Empty Skrevet 20. oktober 2006 Forfatter Skrevet 20. oktober 2006 Oppgaven går ut på å lese inn to tekst strenger, også sammenlikne de, for å se om den andre forekommer i den første. Legger ut hele koden her jeg. package oppgave2c; import javax.swing.*; public class Oppgave2c { public static void main(String[] args) { //Variabeldeklarasjon String utStreng, inputTekst1, inputTekst2; int plass; boolean bool; //Initiere utStreng = ""; //Lese inn verdier inputTekst1 = JOptionPane.showInputDialog("Skriv inn tekst nr1:"); inputTekst2 = JOptionPane.showInputDialog("Skriv inn tekst nr2:"); //Hente verdier fra metode DelLikhet bool = DelLikhet.DelTekst(inputTekst1, inputTekst2); plass = DelLikhet.Plass(inputTekst1, inputTekst2); //Konstruere utskrifsstreng if (bool == true) { utStreng = "Tekst1: " + inputTekst1 + "\n" + "Tekst2: " + inputTekst2 + "\n" + "Tekst1 er en delstreng i Tekst2. Delstrengen starter på plass " + plass; } else { utStreng = "Tekst1: " + inputTekst1 + "\n" + "Tekst2: " + inputTekst2 + "\n" + "Tekst1 er ikke en delstreng i Tekst2"; } //Skrive ut JOptionPane.showMessageDialog(null, utStreng); //Avslutte program System.exit(0); } } package oppgave2c; public class DelLikhet { public static boolean DelTekst(String heltekst, String deltekst) { //Variabeldeklarasjon boolean test; int i, k; //Initiering i = 0; k = 0; test = true; //Gjøre beregninger while (test = true) { for (i = 0; i >= heltekst.length(); i = i + 1) { if (deltekst.charAt(k) == heltekst.charAt(i)) { test = true; k = k + 1; } else { test = false; } } } //Returnere resultat return test; } public static int Plass (String helTekst, String delTekst) { //Variabeldeklarasjon int plass; //Hente plass plass = helTekst.indexOf(delTekst); //Returnere resultat return plass; } }
pgdx Skrevet 20. oktober 2006 Skrevet 20. oktober 2006 For-løkken skal vel være slik? for (int i = 0; i < helTekst.length(); i++) { // DO SOMETHING }
Empty Skrevet 20. oktober 2006 Forfatter Skrevet 20. oktober 2006 Da får jeg feil på denne setningen: if (deltekst.charAt(k) == heltekst.charAt(i))
pgdx Skrevet 20. oktober 2006 Skrevet 20. oktober 2006 I koden din har du fremdeles dette: i = 0; i >= heltekst.length(); i = i+1; Løkken vil ikke kjøres med mindre heltekst.length() returnerer 0. Husk at følgende setninger er lik: i = i + 1; i++; k = k+1; k++ Du må nesten oppgi hvilke feilmeldinger du får når du får kompileringsfeil.
Empty Skrevet 21. oktober 2006 Forfatter Skrevet 21. oktober 2006 Mente å si i forrige post, har endra på det, men får da feil på denne setningen: if (deltekst.charAt(k) == heltekst.charAt(i))
___ Skrevet 21. oktober 2006 Skrevet 21. oktober 2006 Sitter å holder på å laget et program her, men får problem med en while setning: while (test == true) { for (i = 0; i >= helTekst.length(); i = i + 1) { if (delTekst.charAt(k) == helTekst.charAt(i)) { test = true; k = k + 1; } else { test = false; } } } Fjerner jeg while setningen så funker den, men ikke helt som den skal... Noen som kan se et problem? 7111446[/snapback] For det første: i for-løkken bør du bytte ut >= med <. For det andre: Kan ikke se at du initialiserer variabelen k. Jeg regner med at du har satt den til 0. For det tredje: Når du har fikset for-løkka så vil programmet tryne når k blir større enn lengden på strengen delTekst. Du bør derfor sjekke at k har gyldig verdi før du inkrementerer. Werner
pgdx Skrevet 22. oktober 2006 Skrevet 22. oktober 2006 For det fjerde: Alltid, ALLTID, oppgi Javas feilmelding på kompilerings- og kjørefeil!
Qwark Skrevet 22. oktober 2006 Skrevet 22. oktober 2006 (endret) Laget et løsningsforslag til deg. tror det skulle fungere public class DelLikhet { public static boolean DelTekst(String heltekst, String deltekst) { String hel = heltekst.toLowerCase(); String del = deltekst.toLowerCase(); int k = 0; for (int i = 0; i < hel.length(); i++) { if (del.charAt(k) == hel.charAt(i)) { k++; if (k==del.length()){ return true; } } else { k=0; } }return false; } public static int Plass(String helTekst, String delTekst) { return helTekst.indexOf(delTekst); } } Endret 22. oktober 2006 av Qwark
Empty Skrevet 22. oktober 2006 Forfatter Skrevet 22. oktober 2006 Takker for forslaget Qwark, det funka utmerket ! Og til drange, skal huske på det til neste gang.
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå