metod som skriver ut den första siffran
hej,
jag gör en metod som ska ta in ett int tal och returnera den första siffran men hänger ej med hur man ska göra
jag lyckas göra samma sak fast returnera den sista siffran och näst sista osv men inte den första
för den sista gör jag
public static int lastDigit(int n) {
return n % 10;
}
och sen ökar jag 10 till 100 beroende på hur många siffror. Men hur gör man med den första siddran? är det något matematiskt eller måste man använda andra metoder?
edit: den postade meddelandet innan jag var klar
Om du "måste" använda matte kan du dela talet på 10^(antal siffror-1) och använda Math.floor funktionen. Om du t.ex har 6234 ger den först 6,234 och floor ger 6,0 som du kan göra om till en int.
Annars kan du helt enkelt göra talet till en string och använda charAt(0) för att få första tecknet.
Det lättaste är nog att konvertera talet till en string, och köra String.length() på den, alternativt charAt(i). :)
aa exakt hittade att man kunde gör till string men tänkte om det fanns någon annan metod med tanke på att de övriga gick att lösa med en enkel rad så tänkte om et fanns samma för den första siffran.
men då är jag med, tusen tack!
Du kan dela med 10 tills det blir 0 och sen returnera det du hade på varvet innan.
Vad vill du att det ska bli om talet är negativt?
En lösning som inte kräver division (resurskrävande) är att jämföra ditt tal x, med ett exempeltal t. Börja med t = 10, och om x > t gäller, sätt t = t*10 och jämför igen. När din loop är slut har du ett t med samma storlek som ditt tal, som du sedan kan använda till moduloräkning. :)
Tycker man att multiplikation är en tung operation kan man låta kompilatorn räkna ut en liten tabell.