Kan någon förklara vad det här betyder?(Java...hmm nästan nybörjare)

Permalänk

Kan någon förklara vad det här betyder?(Java...hmm nästan nybörjare)

Hej!
Jag har lånat en java bok från skolan för att repetera allt som jag har läst under förra årskurs!
Nu jag tränar kapitel 5, att upprepa
I boken var en övning att leta efter det sista vita tecknet i texten
Jag kollade på facit, och jag kunde se metoden "s.length()-1"

Jag kan inte förstå vad "s.length()-1" betyder. I boken författare förklarar bara s.length, men inte s.length()-1
Har det speciellt något betydelse eller menar det subtraktion mellan talet som man får i s.length och 1?

koden ses ut så här:

public static void main (String[] args){ String s = JOptionPane.showInputDialog("Skriv en text?"); int i; for (i=s.length()-1; i>=0; i=i-1) if (s.charAt(i) == ' ' || s.charAt(i) == '\t') break; if (i >= 0) JOptionPane.showMessageDialog(null, "Sista vita tecken finns på plats nr " + i); else JOptionPane.showMessageDialog(null, "Inga vita tecken"); }

Permalänk
Medlem

s representerar en sträng (eng. string), dvs. en rad tecken, en bit text. length är en funktion, eller en egenskap, som strängar har. Om du i s lagrar texten "Hej" så kommer s.length att returnera 3 eftersom det är tre tecken i strängen. Däremot så lagras bokstäverna i strängen som tre separata tecken på index 0, 1, och 2, och eftersom for-loopen börjar bakifrån, så måste du då ta s.length - 1, eller s.length() - 1 (samma sak), vilket rent matematiskt blir 3 - 1 = 2, alltså det sista tecknet.

Permalänk
Medlem

Som suzieq nämnde, korta versionen:
Java är nollindexerat dvs börjar alltid på 0. En vektor med storleken tre har platserna 0-2 upptagna.

Skickades från m.sweclockers.com

Visa signatur

CPU: Ryzen 5600xGPU: 1080 TI ROG Strix RAM:2x16GB G.skill Trident @ 3600MHz MoBo: Asus B550FPSU: Corsair SF750
En resa till Nordkorea
2 dagar i Tjernobyl

Permalänk
Medlem

Snyggt jobbat @suzieq och @pelegrino.