6 svar
85 visningar
Maremare är nöjd med hjälpen
Maremare 1124
Postad: 15 jul 2020 Redigerad: 15 jul 2020

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

cjan1122 324
Postad: 15 jul 2020

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). :)

Maremare 1124
Postad: 15 jul 2020

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!

Laguna 13518
Postad: 15 jul 2020 Redigerad: 15 jul 2020

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. :)

Laguna 13518
Postad: 15 jul 2020

Tycker man att multiplikation är en tung operation kan man låta kompilatorn räkna ut en liten tabell. 

Svara Avbryt
Close