Gå til innhold

[Løst]Sliter med noen loops i java.


Anbefalte innlegg

Heisann, jeg sitter her å holder på med et program som spør etter fornavn også etternavn og tilslutt et tall mellom 1 og 6(for diverse modifikasjoner av navnene).

Det jeg ikke får til er at programmet skal sjekke om tallet er mindre enn 1 eller større enn 6, da ønsker jeg at det skal begynne forfra igjen, eller på ny om du vil.

 

	public static void main(String[] args) {
	String fnavn, enavn, sum;
	Scanner scan = new Scanner (System.in);

	System.out.println ("Skriv inn fornavnet ditt: ");
	fnavn = scan.nextLine ();

	System.out.println ("Skriv inn etternavnet ditt: ");
	enavn = scan.nextLine ();

	System.out.println ("Tast inn et av følgende tall: ");
	System.out.println ("1: Skriver ut navnet");
	System.out.println ("2: Bytter rekkefølge på fornavn og etternavn");
	System.out.println ("3: Skriver navnet med store bokstaver");
	System.out.println ("4: Skriver navnet med små bokstaver");
	System.out.println ("5: Skriver initialene");
	System.out.println ("6: Skriver ut bare fornavnet");

	int tall = scan.nextInt ();	

*		if (tall !=1 && tall<1 || tall !=6 && tall>6)
		System.out.println ("Prøv igjen!");
	if (tall == 1)
		System.out.println (fnavn + " " +enavn);
	else
		if (tall == 2)
			System.out.println (enavn + " "+ fnavn);
		else
			if (tall == 3)
				System.out.println (fnavn.toUpperCase() +" "+ enavn.toUpperCase());
			else 
				if (tall == 4)
					System.out.println (fnavn.toLowerCase()+" "+ enavn.toLowerCase());
				else
					if (tall == 5)
						System.out.println (fnavn.charAt(0)+""+ enavn.charAt(0));
					else
						if (tall == 6)
							System.out.println (fnavn);
						else; *


	}

}

Skal på en måte få java til å prøve på nytt igjen, liksom si "Feil" også be om å inntaste tall fra 1 til 6 på nytt igjen.

Må jeg sette inn en while loop her etsted kanskje?

Takker på forhånd for all hjelp.

Videoannonse
Annonse

Heisann, prøvde å legge inn en do, satt den inn før jeg printer ut hva 1-6 gjør, men den sier at jeg må lage en while metode nederst, prøver på dette, men får syntax feil.

public static void main(String[] args) {
	String fnavn, enavn, sum;
	Scanner scan = new Scanner (System.in);

	System.out.println ("Skriv inn fornavnet ditt: ");
	fnavn = scan.nextLine ();

	System.out.println ("Skriv inn etternavnet ditt: ");
	enavn = scan.nextLine ();

	int tall;
	tall = 1;
	do {
	System.out.println ("Tast inn et av følgende tall: ");
	System.out.println ("1: Skriver ut navnet");
	System.out.println ("2: Bytter rekkefølge på fornavn og etternavn");
	System.out.println ("3: Skriver navnet med store bokstaver");
	System.out.println ("4: Skriver navnet med små bokstaver");
	System.out.println ("5: Skriver initialene");
	System.out.println ("6: Skriver ut bare fornavnet");


	int tall1 = scan.nextInt ();	

	if (tall1 !=1 && tall1<1 || tall1 !=6 && tall1>6)
		System.out.println ("Prøv igjen!");
	if (tall1 == 1)
		System.out.println (fnavn + " " +enavn);
	else
		if (tall1 == 2)
			System.out.println (enavn + " "+ fnavn);
		else
			if (tall1 == 3)
				System.out.println (fnavn.toUpperCase() +" "+ enavn.toUpperCase());
			else 
				if (tall1 == 4)
					System.out.println (fnavn.toLowerCase()+" "+ enavn.toLowerCase());
				else
					if (tall1 == 5)
						System.out.println (fnavn.charAt(0)+""+ enavn.charAt(0));
					else
						if (tall1 == 6)
							System.out.println (fnavn);
						else;
*	}while (tall <=1 || tall >=6);
		System.out.println ("Det fungerer");			
	}
}

Åja, når jeg satt do over hva 1-6 gjør så får jeg det opp hver gang, uavhengig om tallet som blir tastet inn er 1 eller 90, noen ideer hvordan man fikser dette? :p

Jeg får feil på (*) hvis jeg ikke gir tall en verdi i begynnelsen, ga den en verdi for å se hvordan programmet kjørte. Takk for hjelpen så langt :)

Endret av evilowns

public static void main(String[] args) {
	// TODO Auto-generated method stub

	String fname, enavn, sum;
	Scanner scan = new Scanner(System.in);

	Boolean a = true;
	while(a)
	{
		System.out.println("Skriv inn fornavnet ditt: ");
		fname = scan.nextLine();
		System.out.println("Skriv inn etternavnet ditt: ");
		enavn = scan.nextLine();

		System.out.println("Tast inn et av følkgende tall:\n" +
				"1: Skriver ut navnet.\n" +
				"2: Bytter rekkefølgen på navnene\n" +
				"3: Skriver navnet i store bokstaver\n" +
				"4: Skriver navnet med små bokstaver\n" +
				"5: Skiver initialene\n" +
				"6: Skriver ut bare fornavnet.");

		int tall = scan.nextint();

		if(tall < 1 || tall > 6)
			a = true;
		else {
			switch(tall){
			case 1:
				System.out.println(fname + " " + enavn);
				break;
			case 2:
				System.out.println(enavn + " " + fname);
				break;
			case 3:
				System.out.println (fname.toUpperCase() +" "+ enavn.toUpperCase());
				break;
			case 4:
				System.out.println (fname.toLowerCase()+" "+ enavn.toLowerCase());
				break;
			case 5:
				System.out.println(fname.charAt(0) + enavn.charAt(0));
				break;
			case 6:
				System.out.println(fname);
				break;
			}
			a = false;
		}//End else
	}//End while
}//End main

Her har du den som gjør det du forklarte.

Hei igjen, fikk til den ene loopen men nå sliter jeg med en ting til. Skal få programmet til å gå opp til toppen (enter name), for å kunne ha muligheten til å skrive inn xx for å avslutte, men jeg får det ikke til, programmet går opp og sier tallene på nytt bare.noen ideer om hvordan jeg skal få det til?

 

public static void main(String[] args) {
	String name;
	Scanner scan = new Scanner (System.in);
	boolean a = true;
	boolean b = true;
	while (a){
	String [] splittet;


***			System.out.println ("Skriv inn navnet ditt: ");
		name = scan.nextLine();	
			if  (name.contentEquals("xx") || name.contentEquals("XX")){
				System.out.println ("Avslutter...");
				break;}	*****

	splittet = name.split(" ");
	while (b){
	System.out.println ("Tast inn et av følgende tall: ");
	System.out.println ("1: Skriver ut navnet");
	System.out.println ("2: Bytter rekkefølge på fornavn og etternavn");
	System.out.println ("3: Skriver navnet med store bokstaver");
	System.out.println ("4: Skriver navnet med små bokstaver");
	System.out.println ("5: Skriver initialene");
	System.out.println ("6: Skriver ut bare fornavnet");
	int tall = scan.nextInt ();		

	if (tall <1 || tall >6){System.out.println ("Feil tall, prøv igjen!");
		continue;}

	if (tall == 1)
		System.out.println (name);
	else
		if (tall == 2)
			System.out.println (splittet [1] +" "+splittet [0]);
		else
			if (tall == 3)
				System.out.println (name.toUpperCase());
			else 
				if (tall == 4)
					System.out.println (name.toLowerCase());
				else
					if (tall == 5)
						System.out.println (splittet [0].charAt(0) +""+ splittet[1].charAt(0));
					else
						if (tall == 6)
							System.out.println (splittet [0]);

 }

	}
}
}

Skal ha der det står masse stjerner til å komme opp hvis jeg taster inn et tall som ikke er mellom 1 og 6. Resten av programmet fungerer som planlagt, men jeg mangler denne siste biten. Takk for all hjelp så langt :D

Slik jeg ser det(har ikke studert koden) så kjører while(b) hele veien.

 

Da har du to alternativer:

 

Ha alt i samme whileløkke, eller ha muligheten for å skrive inn xx i andre whileløkken for å kunne avslutte der :)

Siste virker jo da greiest i og med at man slipper å skrive inn navnet hver gang man skal gjøre noe nytt.

Endret av Joachricar

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