Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys

8.2.1 Matkan laskeminen

Ohjelman käyttämä mittakaava kannattaa sijoittaa ehkä vakioksi, tällöin ainakin ohjelman muuttaminen on helpompaa. Samoin vakioksi kannattaa sijoittaa tieto siitä, paljonko yksi km on millimetreinä (1 km = 1000 m, 1 m = 1000 mm). Ohjelmastamme tulee tällöin esimerkiksi seuraavan näköinen:

java-muut\Matka.java - mittakaavamuunnos 1:200000 kartalta

	import java.io.*;
	/**
	 * Ohjelmalla lasketaan mittakaavamuunnoksia 1:200000 kartalta
	 * @author Vesa Lappalainen
	 * @version 1.0 / 05.01.2003
	 */
	class Matka {
	  static final double MITTAKAAVA = 200000.0;
	  static final double MM_KM      = 1000.0*1000.0;
	
	  public static void main(String[] args) {
	    int    matka_mm;
	    double matka_km;
	
	    // Ohjeet
	    System.out.println("Lasken 1:" + MITTAKAAVA +
	                       " kartalta millimetreinä mitatun matkan");
	    System.out.println("kilometreinä luonnossa.");
	
	    // Syöttöpyyntö ja vastauksen lukeminen
	    System.out.print("Anna matka millimetreinä>");
	    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
	    String s = "";
	    try {
	      s = in.readLine();
	    } catch (IOException ex) {
	    }
	    if ( s == null ) return;
	    if ( s.equals("") ) return;
	    matka_mm = Integer.parseInt(s);
	
	    // Datan käsittely
	    matka_km = matka_mm*MITTAKAAVA/MM_KM;
	
	    // Tulostus
	    System.out.println("Matka on luonnossa " + matka_km + " km.");
	  }
	}

Lukija huomatkoon, että muuttujien ja vakioiden nimet on pyritty valitsemaan siten, ettei niitä tarvitse paljoa selitellä. Tästä huolimatta isommissa ohjelmissa on tapana kommentoida muuttujan esittelyn viereen muuttujan käyttötarkoitus. Mekin pyrimme tähän myöhemmin.

Valitettavasti Javan suoraan sanoen alkeiskäyttöön kelvottoman IO:n takia ohjelman kohta "Syöttöpyyntö ja vastauksen lukeminen" venähti toivottoman pitkäksi. No toisaalta näemme kohta sitäkin paremmin yleiskäyttöisten alirutiinien hyödyt.

Tehtävä 8.1 Vakion korvaaminen

Kokeile ottaa vakioiden edestä pois sana static. Mitä tällöin tapahtuu ja miksi? Onko final-sanan poistamisella sama vaikutus (palauta ensin static)?

Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys