Gå til innhold

Problem med while setning


Anbefalte innlegg

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
Videoannonse
Annonse

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

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
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

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 av Qwark
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...