Gå til innhold

Anbefalte innlegg

Jeg bruker en nextLine() metode i en loop, men metoden fungerer kun første gang loopen kjører. Neste gang loopen kjører skjer det ikke noe når jeg skriver tekst inn i konsollvinduet og loopen avsluttes derfor når jeg trykker enter. Noen som vet hva som er galt?

 

for(int index=0;index<ord.length;index++)

{

string=scan.nextLine();

if(!string.equals(""))

{

ord[index]=new PP11_12_Ord(string);

antall++;

}

else

index=ord.length;

}

Lenke til kommentar
Videoannonse
Annonse

Hmmm, kan det være at kriteriet for løkken overskrides etter første gjennomkjøring? (Altså at !string.equals("") er false første gang løkken kjøres)

 

Nei, det er ikke det som er feilen. Jeg har prøvd flere forskjellige måter og har ennå ikke fått det til å fungere. Det virker som det ofte er noe tull med Scanner-klassen, syns jeg.

Lenke til kommentar

Grunnen til at løkka di feiler er pga ELSE-påstanden din. Når den registrerer at du ikke skriver noe inn, setter den index-variabelen lik lengden på arrayet du itererer. Du har i tillegg satt i FOR-påstanden at løkka bare skal iterere så lenge index-variabelen er mindre enn lendgen på arrayet. Det som skjer er at FOR-løkka di avsluttes fordi index er høyere enn den øvre grensen, som du satte for selve løkka.

Lenke til kommentar

Jeg er klar over at løkka avsluttes når jeg ikke skriver noe inn, det er også intensjonen. Problemet er at det ikke er mulig å skrive noe inn når løkka kjører for andre gang, selv når jeg skrev noe inn ved første gjennomkjøring. Løkka avsluttes når jeg trykker enter ved andre gjennomkjøring fordi det ikke skjer noe når jeg trykker på bokstavene på tastaturet.

Lenke til kommentar

Det samme problemet oppstår for eksempel her:

import java.util.Scanner;
public class test
{
   public static  void main(String[]args)
   {
       Scanner scan=new Scanner(System.in);
       String a=scan.nextLine();
       String b=scan.nextLine();
   }
}

 

Når programmet kjører går det an å skrive inn noe for a, men ikke for b

Lenke til kommentar

[peterbb@lambda ~]$ cat Test.java
import java.util.Scanner;
public class Test
{
public static void main(String[]args)
{
	Scanner scan=new Scanner(System.in);
	String a=scan.nextLine();
	String b=scan.nextLine();

	System.out.printf("a=\"%s\" og b=\"%s\"\n", a, b);
}
}
[peterbb@lambda ~]$ java Test
string a
string b
a="string a" og b="string b"
[peterbb@lambda ~]$ 

 

Er ikke noe IDE eller noe som ødelegger? Hvordan kjører du programmet?

Lenke til kommentar

Jeg fant en metode etter at jeg skrev mitt forrige innlegg:

 

import java.util.Scanner;
public class test
{
   public static  void main(String[]args)
   {
       Scanner scan=new Scanner(System.in);
       String a=scan.nextLine();
       System.out.println();
       String b=scan.nextLine();
   }
}

La bare til System.out.println() mellom String a og String b. Det fungerer også i koden jeg skrev i mitt første innlegg. Jeg bruker IntelliJ IDEA 9, kanskje det er det som skaper problemer.

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