Empty Skrevet 20. oktober 2006 Del 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? Lenke til kommentar
HighTower Skrevet 20. oktober 2006 Del 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 Lenke til kommentar
Empty Skrevet 20. oktober 2006 Forfatter Del 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 Lenke til kommentar
Empty Skrevet 20. oktober 2006 Forfatter Del 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; } } Lenke til kommentar
pgdx Skrevet 20. oktober 2006 Del Skrevet 20. oktober 2006 For-løkken skal vel være slik? for (int i = 0; i < helTekst.length(); i++) { // DO SOMETHING } Lenke til kommentar
Empty Skrevet 20. oktober 2006 Forfatter Del Skrevet 20. oktober 2006 Da får jeg feil på denne setningen: if (deltekst.charAt(k) == heltekst.charAt(i)) Lenke til kommentar
pgdx Skrevet 20. oktober 2006 Del 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. Lenke til kommentar
Empty Skrevet 21. oktober 2006 Forfatter Del 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)) Lenke til kommentar
___ Skrevet 21. oktober 2006 Del 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 Lenke til kommentar
pgdx Skrevet 22. oktober 2006 Del Skrevet 22. oktober 2006 For det fjerde: Alltid, ALLTID, oppgi Javas feilmelding på kompilerings- og kjørefeil! Lenke til kommentar
Qwark Skrevet 22. oktober 2006 Del 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 Lenke til kommentar
Empty Skrevet 22. oktober 2006 Forfatter Del Skrevet 22. oktober 2006 Takker for forslaget Qwark, det funka utmerket ! Og til drange, skal huske på det til neste gang. Lenke til kommentar
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å