Mikähän voisi olla ongelma ohjelma ei vain toimi.
Eli tehtävän anto ois tällänen:
Alla oleva Java-ohjelma Matriisi lukee tiedostosta "matriisi.txt" kokonaislukutaulukon sijoittaen sen 5x5 taulukkoon matriisi[][]. Ohjelma tulostaa matriisin näytölle, laskee alkioiden summan ja tulostaa summan näytölle hyödyntäen metodeja tulosta_matriisi() ja laske_summa(). Sinun tehtävänä on laatia em. metodit. Ohjelman esimerkkitulosteesta näet, kuinka ohjelman tuloste muotoillaan. Rivillä sijaitsevat arvot erotellaan tabulaattorilla. Huomaa, että tiedostojen käsittely ei kuulu varsinaisesti kurssin aihealueeseen.
Vihje:
Seuraava metodin määrittely havainnollistaa taulukon viemistä metodille parametrinä:
public static int vastaanottaa_kaksi_ulot_taulukon(int[][] taulukolle_nimi);
import java.io.*;
import java.util.*;
public class Matriisi
{
public static void main(String[] args)
{
int matriisi[][] = new int[5][5];
int summa;
String temp;
try{
BufferedReader syote = new BufferedReader(new FileReader("matriisi.txt"));
for(int x = 0; x < 5; x ){
temp = syote.readLine();
StringTokenizer eroitin = new StringTokenizer(temp, "\t");
for(int y = 0; y < 5; y ){
matriisi[x][y] = Integer.parseInt(eroitin.nextToken());
}
}
syote.close();
System.out.print("Matriisi:\n\n");
tulosta_matriisi(matriisi);
summa = laske_summa(matriisi);
System.out.print("\nMatriisin alkioiden summa: " summa);
}catch(Exception e){
System.out.print("Antamasi syöte oli virheellinen..." e);
}
}
// Metodit tulosta_matriisi() ja laske_summa()
// kirjoitetaan tähän ...
}
Esimerkkitulostus
Matriisi:
32 32 2 23 33
32 23 33 332 32
42 43 44 32 31
83 86 56 545 44
33 37 38 39 30
Matriisin alkioiden summa: 1757
Ja koodi jonka olen aikaan saanut.
public static void tulosta_matriisi(int[][] natriisi ){
int x,y;
for(x = 0; x < 6; x ){
for(y = 0; y < 6; y ){
System.out.print(natriisi[x][y] " ");
System.out.println();
}
}
}
static void laske_summa(int[][] natriisi){
int x, y;
for(x = 0; x < 6; x )
for(y = 0; y < 6; y )
natriisi[x][y] =(x y);
}
Eli tehtävän anto ois tällänen:
Alla oleva Java-ohjelma Matriisi lukee tiedostosta "matriisi.txt" kokonaislukutaulukon sijoittaen sen 5x5 taulukkoon matriisi[][]. Ohjelma tulostaa matriisin näytölle, laskee alkioiden summan ja tulostaa summan näytölle hyödyntäen metodeja tulosta_matriisi() ja laske_summa(). Sinun tehtävänä on laatia em. metodit. Ohjelman esimerkkitulosteesta näet, kuinka ohjelman tuloste muotoillaan. Rivillä sijaitsevat arvot erotellaan tabulaattorilla. Huomaa, että tiedostojen käsittely ei kuulu varsinaisesti kurssin aihealueeseen.
Vihje:
Seuraava metodin määrittely havainnollistaa taulukon viemistä metodille parametrinä:
public static int vastaanottaa_kaksi_ulot_taulukon(int[][] taulukolle_nimi);
import java.io.*;
import java.util.*;
public class Matriisi
{
public static void main(String[] args)
{
int matriisi[][] = new int[5][5];
int summa;
String temp;
try{
BufferedReader syote = new BufferedReader(new FileReader("matriisi.txt"));
for(int x = 0; x < 5; x ){
temp = syote.readLine();
StringTokenizer eroitin = new StringTokenizer(temp, "\t");
for(int y = 0; y < 5; y ){
matriisi[x][y] = Integer.parseInt(eroitin.nextToken());
}
}
syote.close();
System.out.print("Matriisi:\n\n");
tulosta_matriisi(matriisi);
summa = laske_summa(matriisi);
System.out.print("\nMatriisin alkioiden summa: " summa);
}catch(Exception e){
System.out.print("Antamasi syöte oli virheellinen..." e);
}
}
// Metodit tulosta_matriisi() ja laske_summa()
// kirjoitetaan tähän ...
}
Esimerkkitulostus
Matriisi:
32 32 2 23 33
32 23 33 332 32
42 43 44 32 31
83 86 56 545 44
33 37 38 39 30
Matriisin alkioiden summa: 1757
Ja koodi jonka olen aikaan saanut.
public static void tulosta_matriisi(int[][] natriisi ){
int x,y;
for(x = 0; x < 6; x ){
for(y = 0; y < 6; y ){
System.out.print(natriisi[x][y] " ");
System.out.println();
}
}
}
static void laske_summa(int[][] natriisi){
int x, y;
for(x = 0; x < 6; x )
for(y = 0; y < 6; y )
natriisi[x][y] =(x y);
}
Vastaukset 3
Vanhimmat
laske_summa ainakin kusee huolella. Sijoitat taulukkoon x:n ja y:n arvoja kun sieltä pitäisi kaivaa arvoja ja laskea ne yhteen
static void laske_summa(int[][] natriisi){
int x, y;
for(x = 0; x < 6; x )
for(y = 0; y < 6; y )
natriisi[x][y] =(x y);
}
pitäis olla
static void laske_summa(int[][] natriisi)
{
__int x, y;
__int summa=0;
__for(x = 0; x < 6; x )
__{
_____for(y = 0; y < 6; y )
_____{
_______summa = summa natriisi[x][y];
_____}
__}
__System.out.println("Summa on: " summa);
}
Vielä näyttäisi olevan tuos tulostus metodissa joku virhe jos voisit viel hieman auttaa.
Ohjelmasi tulosti seuraavasti:
Matriisi:
32 32 2 23 33 Antamasi syöte oli virheellinen...java.lang.ArrayIndexOutOfBoundsException: 5
Olisi pitänyt tulostaa näin:
Matriisi:
32 32 2 23 33
32 23 33 332 32
42 43 44 32 31
83 86 56 545 44
33 37 38 39 30
Matriisin alkioiden summa: 1757
Kaikki sun ohjelman for-loopit pitäis mennä 0:sta viiteen, sä lasket kuuteen. (Sitä toi virheilmoituskin yrittää kertoa..)
Siis
for (x = 0;x < 5; x )
jne.
Muista, javan taulukoitten indeksit alkaa nollasta, eli viisi-alkioisen taulukon indeksit ovat 0, 1, 2, 3 ja 4.