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.