Hej!
Jag håller på med del 2 av övningen "Alla namn" i programmering 1.
Del ett innebär som följer:
"Skapa en string-vektor med fem element. Användaren får mata in fem namn via en for-loop. Programmet skriver sedan ut dessa namn via en annan for-loop."
Denna delen är jag klar med, koden funkar som den ska.
Del två som jag inte fattar någonting av är:
"Efter att alla namn har skrivits ut ska användaren kunna skriva ett index och därefter ett annat namn. Personen på detta index i vektorn byts då ut och alla namn skrivs ut igen. Om användaren istället skriver" Q" eller "q" så avslutas programmet direkt."
Min fråga är hur sjutton jag får till detta? Alltså att användaren ska kunna skriva in ett index och ett nytt namn. Någon som har några tips? Läst böckerna jag har och kollat runt på internet men hittar tyvärr ingen information som hjälper mig.
Tack på förhand.
@PallePelle: Kan du vara lite mer specifik med vad du har problem med? Annars är det svårt att ge något tips utan att lösa hela uppgiften åt dig.
Vet inte vilket språk du använder men det är inte så komplicerat. Typ fråga användaren vilket namn de vill byta ut med dess nummer, detta (minus ett, index börjar på noll i de flesta språk) använder du sen för att välja plats i arrayen som du sätter till det namn användaren har angivit. Typ
var names = new string[5];
//fyll den med namn som du redan har löst...
//skriv ut namnen, gärna med ett index före, så användare får typ:
//1. Kalle
//2. Lisa...
Print("Välj vilket namn du vill byta ut med siffran.");
var index = //användarens input
Print("Vilket namn vill du byta till?");
var newName = //användarens input
names[index -1] = newName;
Java enkel hantering:
import java.util.Scanner;
Scanner scan = new Scanner(System.in);
String s = scan.next();
int i = scan.nextInt();
För att avsluta. T.ex
If(s.equals("q"))
System.exit(1)
Skickades från m.sweclockers.com
Koden i Java:
import java.util.Scanner;
import java.util.Vector;
class Main {
public static void main(String[] args) {
// Uppgift 1
Scanner scanner = new Scanner(System.in);
Vector<String> names = new Vector(5);
for (int i = 0; i < 5; i++){
System.out.print("Ange namn " + i + ": ");
String name = scanner.nextLine();
names.add(i, name);
}
for (int i = 0; i < 5; i++){
System.out.println(i + " " + names.elementAt(i));
}
// Uppgift 2
String currInput;
while (true) {
System.out.print("Ange index (0-4) för nytt namn: ");
int index = scanner.nextInt();
scanner.nextLine();
System.out.print("Ange nytt namn (q för att avsluta): ");
currInput = scanner.nextLine();
if (currInput.equals("q") || currInput.equals("Q")){
scanner.close();
System.exit(0);
}
names.add(index, currInput);
for (int i = 0; i < 5; i++){
System.out.println(i + " " + names.elementAt(i));
}
}
}
}
Exempel:
Ange namn 0: Kalle
Ange namn 1: Johan
Ange namn 2: Karin
Ange namn 3: Örje
Ange namn 4: Gunnar
0 Kalle
1 Johan
2 Karin
3 Örje
4 Gunnar
Ange index (0-4) för nytt namn: 3
Ange nytt namn (q för att avsluta): Anna
0 Kalle
1 Johan
2 Karin
3 Anna
4 Örje
Ange index (0-4) för nytt namn: 0
Ange nytt namn (q för att avsluta): q
Du kan själv köra koden här: https://repl.it/@johanbx/sweclockers-namn-index
scanner med nextInt och sedan nextLine var förvirrande för mig. Sedan tycker jag det är konstigt att ni använder en for-loop och inte använder en vektor iterator för att gå igenom värderna. Får ni använda funktioner skulle jag köra en funktion för att printa ut värderna. Har ni börjat med string formating/interpolation skulle jag använda det med i System.out.print. Sedan kan man pille med felhantering osv, men antar att ni inte behöver det. Lycka till :)!
Copyright © 1999–2023 Geeks AB. Allt innehåll tillhör Geeks AB.
Citering är tillåten om källan anges.