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

Trädvy Permalänk
Medlem
Registrerad
Apr 2016

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"); }

Trädvy Permalänk
Medlem
Registrerad
Sep 2010

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.

Trädvy Permalänk
Medlem
Plats
Lund
Registrerad
Maj 2013

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

CPU: i5 4670k @4.5Ghz GPU: 1080 TI ROG Strix RAM: 4x4GB 1666Mhz MoBo: MSI Z87-g45 GAMING PSU: Corsair CX 750M

Trädvy Permalänk
Medlem
Plats
Landskrona
Registrerad
Nov 2008

Snyggt jobbat @suzieq och @pelegrino.