Kirjoittaja: E.K.Virtanen
Kirjoitettu: 28.02.2014 – 01.03.2014
Tagit: algoritmit, teksti, koodi näytille, vinkki
Useimmat ohjelmointikielet tarjoavat valmiit funktiot tekstijonon muuttamiseksi kokonaisluvuksi ja toisinpäin. Tämä ei kuitenkaan tarkoita sitä, että tämänkaltaisten funktioiden toiminnan pohdiskelu olisi turhaa. Kaikenlaisten algoritmien (suht turhienkin) pohdiskelu on mukavaa aivojumppaa.
Ohjelmoinnin perusteet osaavalle merkkijonon muuntaminen kokonaisluvuksi oman algoritmin avulla on kohtuullisen helppo tehtävä. Ohjelman toiminta on selitetty kommenteissa.
public class MerkitLuvuiksi { public static int str2Int(String lukuMerkkeina) throws IllegalArgumentException { int merkitLukuna = 0; // Tarkistetaan ettei argumentti ole tyhjä if(lukuMerkkeina.length() == 0) { throw new IllegalArgumentException("Tyhjä argumentti!"); } // Jos ensimmäinen merkki on "-" niin negatiivisesta tulee tosi ja "-" merkki poistetaan muuttujasta.' boolean negatiivinen = false; if(lukuMerkkeina.charAt(0) == '-') { negatiivinen = true; lukuMerkkeina = lukuMerkkeina.substring(1); } // käydään silmukalla läpi lukuMerkkeina muuttuja for(char m: lukuMerkkeina.toCharArray()) { // Jos merkki on muuta kuin 0-9, aiheutetaan poikkeus if(m < '0' || m > '9') { throw new IllegalArgumentException("Laiton merkki argumentissa!"); } // merkitLukuna kertautuu aina kymmenellä kun silmukka etenee kierroksen // tähän lisätään viimeisin luku merkitLukuna = 10 * merkitLukuna + (m - '0'); } // palautetaan arvo negatiivisena tai positiivisena return negatiivinen ? -merkitLukuna : merkitLukuna; } public static void main(String[] args) { // Kutsutaan luokkaa Str2Int System.out.println(str2Int("43432")); } }