Matriisi ongelma javassa

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

}
33121
Äänestä

Muut lukivat myös

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

Äänestä
  • 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

    Äänestä

  • alottelia kirjoitti:

    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.

    Äänestä

Kommentoi aloitusta


alottelia kirjoitti:

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

}

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu