Gå til innhold

Problem med while setning


Anbefalte innlegg

Skrevet

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?

Videoannonse
Annonse
Skrevet

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

Skrevet (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 av Empty
Skrevet

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

}

Skrevet

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.

Skrevet

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

Skrevet (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 av Qwark

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å
×
×
  • Opprett ny...