Req: Har fastnat i övningsuppgift i javaprogramering och skulle behöva lite hjälp?

Permalänk
Medlem

Req: Har fastnat i övningsuppgift i javaprogramering och skulle behöva lite hjälp?

Hej jag har kört fast på en övningsuppgift i javaprogramering, Jag förstår inte riktigt hur jag ska svara, frågan ser ut så här:

Uppgift 15 (3p): Förklara vad som menas med sentinelvärden (eng. sentinel values). Ange samtliga
sentinelvärden för följande while-loop:

while (!word.equals("stopp") && !word.equals("rätt")) {
word = createRandomWord();
}

Jag svarade att sentinelvärden är "stopp" och "rätt" och att för att loopen ska exikveras måste bäda vara sanna. Det känns fel, eller vad säger ni?

Permalänk
Inaktiv

Eftersom du har ett utropstecken före de olika konditionerna betyder de att de måste vara falska.
Sentinelvärdena är stopp och rätt; http://en.wikipedia.org/wiki/Sentinel_value, så det har du helt rätt på.

Permalänk
Medlem

Tack!

tack så mycket!! det var skönt att höra.

Sen är jag osäker på den här också:
Uppgift 4 (1p): Vad skrivs ut i konsolen av följande källkod:
String y = "";
for (int i = 1; i <= 4; i++) {
y += i + “\n”;
} System.out.println(y);

Jag tror att svaret blir:
1
2
3
4

Men kan det vara så att det ska vara 2 raders mellanrum mellan siffrorna efterson system.out.println ger ny rad men det gör ju även "\n"

Man jag kanske har rätt endå när jag tänker att jag ska baka in värdena mellan " " på första raden och vid varje varv göra ett radbyte?

Permalänk
Medlem
Skrivet av oscwin:

tack så mycket!! det var skönt att höra.

Sen är jag osäker på den här också:
Uppgift 4 (1p): Vad skrivs ut i konsolen av följande källkod:
String y = "";
for (int i = 1; i <= 4; i++) {
y += i + “\n”;
} System.out.println(y);

Jag tror att svaret blir:
1
2
3
4

Men kan det vara så att det ska vara 2 raders mellanrum mellan siffrorna efterson system.out.println ger ny rad men det gör ju även "\n"

Man jag kanske har rätt endå när jag tänker att jag ska baka in värdena mellan " " på första raden och vid varje varv göra ett radbyte?

Du tänker lite rätt, men glöm inte bort att System.out.println(y); står utanför loopen, så det som kommer hända är:

En tom sträng skapas, sen lägger du till "1\n" sen "2\n" osv så att strängen till slut blir: "1\n2\n3\n4\n". Efter det skriver du ut strängen.

om man skriver ut det med println() kommer det att bli:
1
2
3
4
<- ("\n" tillsammans med println() här gör att du får en extra tom rad

Println hoppar till nästa rad, precis som du säger, men det kommer ju bara hända en gång eftersom du bara kallar println en gång.

Permalänk
Medlem

Tack

tack så du är en klippa!, vi sitter och pluggar inför morgondagens tenta här.

Permalänk
Medlem

Jätte snällt att du tar dig tid.

Om du känner att du orkar får du gärna titta på den här med som vi är lite oense om här:

Uppgift 7 (1p): Vad blir effekten av följande källkod:
String x = “Hej hopp”;
String result = “”;
for (int i = 0; i < x.length(); i = i+2) {
result += x.charAt(i);
} System.out.println(result);

några tror att det blir: Hjhp med en radbrytning på slutet efter som man börjar räkna från 01234567

medans några säger att det ska vara :

< x.length betyder att loopen körs genom hela texten tills den är slut.
x.lenght = börjar på 0, i detta fall H

Rätt svar: H j o p

Vi är också nyfikna på vad som skulle hända om system.out.println ligger innanför lokalt?

Permalänk
Medlem
Skrivet av oscwin:

Om du känner att du orkar får du gärna titta på den här med som vi är lite oense om här:

Uppgift 7 (1p): Vad blir effekten av följande källkod:
String x = “Hej hopp”;
String result = “”;
for (int i = 0; i < x.length(); i = i+2) {
result += x.charAt(i);
} System.out.println(result);

några tror att det blir: Hjhp med en radbrytning på slutet efter som man börjar räkna från 01234567

medans några säger att det ska vara :

< x.length betyder att loopen körs genom hela texten tills den är slut.
x.lenght = börjar på 0, i detta fall H

Rätt svar: H j o p

Vi är också nyfikna på vad som skulle hända om system.out.println ligger innanför lokalt?

Kan börja med att säga att om println ligger inuti for-satsen så kommer ju strängen att skrivas ut flera gånger, en gång per "steg" i loopen.

Om du har en sträng a = "Hej", så kommer a.charAt(0) returnera "H" a.charAt(1) kommer returnera "e" och a.charAt(2) kommer returnera "j". a.length() är 3. Därför kan jag loopa genom hela strängen, a = "Hej", genom att skriva for (int i = 0; i < a.length(); i++), vilket betyder att jag börjar på 0, jag kör så länge i är mindre än a.length() och jag lägger till 1 på i efter varje repetition.

Då kommer jag att gå genom charAt(0), 1 och 2, sen tar loopen slut eftersom att 3 är inte mindre än a.length().

Jag förstår inte riktigt vad du menar med att length() "börjar på 0" för att length är helt enkelt antal tecken som finns i strängen.

Gå genom programmet stegvis, skriv upp alla variabler som finns med på ett papper och gå rad för rad genom programmet så kommer ni säkert få bättre förståelse.

(Det du skrivit som rätt svar stämmer inte heller, kanske om det inte är ett mellanrum mellan "Hej" och "hopp" dock.)