4 svar
129 visningar
progeb 2
Postad: 4 jan 2023 11:33

Efterfråga namn igen - loop

Jag ska skapa en loop där man säkerställer att användaren har matat in ett korrekt namn och om namnet är fel så ska ett felmeddelande skickas ut. Har frågat om hjälp ang vad som är fel av mina lärare men får noll respons så frågar ut här. Först och främst tror jag nog att do-while är fel sätt att använda loopen på men får den inte att fungera på något annat sätt heller! Nu när jag skrivit ut String name; ovan loopen så fungerar heller inte .trim(); på rätt sätt. 

Innan jag försökte loopa stod det alltså: String name = keyboard.readText("Name").trim();

Tips på vad jag kan göra för att efterfråga namnet igen?? 

SeriousCephalopod 2696
Postad: 4 jan 2023 11:41 Redigerad: 4 jan 2023 11:41

Nog enklare att göra en while-loop med if-satser som leder till ett break;-villkor som tar sig ur loopen. Du vill ju exempelvis bara ge felmeddelandet om det faktiskt är fel i input. Som det är nu så skriver du alltid ut felmeddelandet oavsett om loopen bryts eller ej.

Du får redogöra mer för vad problemet är. Att du får runtime errors, compile errors, eller bara oavsedd output.

Koden som du postat går inte ens att köra självständigt (och går därmed inte att felsöka) då du måste definierat bland annat keyboard utanför rutan så går inte att veta om finns fler fel utanför kod-snippet.

SeriousCephalopod 2696
Postad: 4 jan 2023 11:49 Redigerad: 4 jan 2023 11:50

Tänker mig en while-loop i det här formatet som en första lösning:

not_done = True

while (not_done):
	ask user for name
	check if name is valid

	if valid:
		change not_done to False
	if not valid:
		Write error message (and rerun loop as not_done is still True)
anders_k 237
Postad: 4 jan 2023 12:04

visserligen var det några år sen jag programmerade i Java men är det inte lättare att använda ett Scanner objekt för att läsa fr tangentbordet?

String name;
Scanner input = new Scanner(System.in);
do
{
  System.out.print("Namn:");
  name = input.nextLine();
  if (name.IsEmpty())
  {
    System.out.println("Fel sträng");
  }
}
while (name.IsEmpty());
progeb 2
Postad: 4 jan 2023 13:44

Tack jag lyckades lösa problemet!

Svara
Close