Kirjautuminen

Haku

Tehtävät

Koodit: Java: Merkkijono kokonaisluvuksi

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

Kirjoita kommentti

Muista lukea kirjoitusohjeet.
Tietoa sivustosta