Tämä on koodi, jolla lasketaan luonnollisten, kolmio -ja tetraedrilukujen summia. Ohjelmassa käytetään olio-ohjelmoinnin tekniikoita, kuten olion attribuutit, konstruktori (jos ei ole konstruktoria luotaan aina automaattisesti oletuskonstruktori), kapselointi sekä get-lauseet.
import java.util.*; class Summat { //Luodaan muuttujat yksityisiksi, jotta niitä ei voi suoraan muokata päohjelman kautta. private int luvut[]; private int kolmiot[]; private int tetrat[]; private int summat[]; private int maara; private int summa; private int luvutSumma; private int kolmiotSumma; private int tetratSumma; private int luku; private int kolmio; private int tetra; private ArrayList<Integer> luvutLista; private ArrayList<Integer> kolmiotLista; private ArrayList<Integer> tetratLista; public Summat(int maara){ //Alustetaan muuttujat ja taulukot, että niitä voidaan käyttää. luvut = new int[maara]; kolmiot = new int[maara]; tetrat = new int[maara]; summat = new int[maara]; this.maara = maara; luvutSumma = 0; kolmiotSumma = 0; tetratSumma = 0; luvutLista = new ArrayList<>(); kolmiotLista = new ArrayList<>(); tetratLista = new ArrayList<>(); } public void LaskeLuvut(){ //Lasketaan tässä metodissa erikseen luvut taulukoihin ja summat. luvut[0] = 1; kolmiot[0] += luvut[0]; tetrat[0] += kolmiot[0]; luvutSumma += luvut[0]; kolmiotSumma += kolmiot[0]; tetratSumma += tetrat[0]; //Edelliseen alkioon lisätään nykyinen luku. for (int i = 1; i < maara; i++){ luvut[i] = i+1; kolmiot[i] += kolmiot[i-1]+luvut[i]; tetrat[i] += tetrat[i-1]+kolmiot[i]; luvutSumma += luvut[i]; kolmiotSumma += kolmiot[i]; tetratSumma += tetrat[i]; } } public void LaskeSumma(boolean onkoLuku, boolean onkoKolmio, boolean onkoTetra){ //Lasketaan jokaisen alkon summa lukujonoista. //Käyttäjä voi itse päättää, mitkä lukujonot otetaan huomioon laskemisessa. //Lukujonoja on kolmea erilaista. for (int i = 0; i < maara; i++){ summa = 0; if (onkoLuku){ summa += luvut[i]; } if (onkoKolmio){ summa += kolmiot[i]; } if (onkoTetra){ summa += tetrat[i]; } summat[i] = summa; //Tämä voidaan myöhemmin palauttaa pääohjelmalle. } } public int AnnaOsanSumma(int valinta){ //Lasketaaan tietyn lukujonon kaikkien määritettyjen alkioiden summa. switch (valinta){ case 1: return luvutSumma; case 2: return kolmiotSumma; case 3: return tetratSumma; } return 0; } public int[] AnnaSumma(){ return summat; } public void LisaaLuku(){ //Lisätään ArrayListiin uudet luvut. luku++; kolmio += luku; tetra += kolmio; luvutLista.add(luku); kolmiotLista.add(kolmio); tetratLista.add(tetra); } public int AnnaLuku(int valinta, int indeksi){ //Palautetaan käyttäjälle annettu lukujonon indeksi. switch (valinta){ case 1: return luvutLista.get(indeksi); case 2: return kolmiotLista.get(indeksi); case 3: return tetratLista.get(indeksi); } return 0; } }
public class TetraedrienSumma { public static void main(String[] args){ //Tämän pääohjelman kautta voidaan laskea lukujonoja Summat-luokan kautta Summat s = new Summat(10); Summat s2 = new Summat(8); Summat s3 = new Summat(5); s.LaskeLuvut(); s.LaskeSumma(false,true,true); for (Integer i : s.AnnaSumma()){ System.out.println(i); } System.out.println(""); System.out.println(s.AnnaOsanSumma(2)); System.out.println(""); s2.LaskeLuvut(); s2.LaskeSumma(true,false,true); for (Integer i : s2.AnnaSumma()){ System.out.println(i); } System.out.println(""); System.out.println(s2.AnnaOsanSumma(2)); System.out.println(""); //Lopuksi käytetään ArrayListiä. for (int i = 0; i < 10; i++){ s3.LisaaLuku(); } System.out.println(""); for (int i = 0; i < 10; i+=2){ System.out.println(s3.AnnaLuku(3,i)); } } }
Aihe on jo aika vanha, joten et voi enää vastata siihen.