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.

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

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.

Lenke til kommentar

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

Lenke til kommentar

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