Taulukon täyttäminen riveittäin

Harkkatyön tekeminen tyssäsi heti alkuunsa, kun taulukon täyttämisessä tuli pienoinen ongelma..
----------------------------------
Siis tällaista pitäisi saada näytölle:
Tämä on yksinkertainen muistipeli.
Anna rivien lkm:
3
Anna sarakkeiden lkm:
2
Anna rivi 1:
ab
Anna rivi 2:
ca
Anna rivi 3:
bc
-----------------------

Kyhäilemäni metodin runko on tässä, mutta miten arvon lukeminen pitäisi tehdä, kun syötteet annetaan näin riveittäin (yllä)?!

public static void taytaKentta(char[][] t, int m, int n) {
// Silmukoinnissa tarvittavat muuttujat.
int rivi, sarake;

// Tehdään jotain vain jos taulukolle on varattu muistia.
if (t != null) {
for (rivi = 0; rivi < m; rivi )
for (sarake = 0; sarake < n; sarake ) {
// Luetaan arvo.
System.out.print("Anna rivi " rivi ": ");
t[rivi][sarake] = In.readChar();

Auttaisiko joku osaava ihminen minua korjaamaan tämän koodin, olisin erittäin kiitollinen!!:o)
5786
Äänestä

Muut lukivat myös

Vastaukset 5

Vanhimmat

tuossa print on väärässä paikassa

for (rivi = 0; rivi < m; rivi )
{
System.out.println("Anna rivi " rivi ": ");

for (sarake = 0; sarake < n; sarake ) {
// Luetaan arvo.
t[rivi][sarake] = In.readChar();
}
}

nyt en pysty testaamaan

Äänestä
  • ..auttoi jo huomattavasti, kiitos! Nyt merkit saa luettua riveittäin, mutta vielä ongelmana se, että merkin jälkeen joutuu aina painamaan enteriä, jolloin rivi vaihtuu ja näytölle tulostuu näin:

    Anna rivien lkm:
    2
    Anna sarakkeiden lkm:
    2
    Anna rivi 0:
    a
    b
    Anna rivi 1:
    b
    a
    Paina Enter, kun haluat jatkaa.
    ----------------
    Kun pitäisi saada näin:
    Anna rivien lkm:
    2
    Anna sarakkeiden lkm:
    2
    Anna rivi 0:
    ab
    Anna rivi 1:
    ba
    Paina Enter, kun haluat jatkaa.

    Osaisko joku vielä tähän antaa vinkkiä?!:)

    Äänestä

  • saapas kirjoitti:

    ..auttoi jo huomattavasti, kiitos! Nyt merkit saa luettua riveittäin, mutta vielä ongelmana se, että merkin jälkeen joutuu aina painamaan enteriä, jolloin rivi vaihtuu ja näytölle tulostuu näin:

    Anna rivien lkm:
    2
    Anna sarakkeiden lkm:
    2
    Anna rivi 0:
    a
    b
    Anna rivi 1:
    b
    a
    Paina Enter, kun haluat jatkaa.
    ----------------
    Kun pitäisi saada näin:
    Anna rivien lkm:
    2
    Anna sarakkeiden lkm:
    2
    Anna rivi 0:
    ab
    Anna rivi 1:
    ba
    Paina Enter, kun haluat jatkaa.

    Osaisko joku vielä tähän antaa vinkkiä?!:)

    lue vaikka String ja kopsaa sitten t:hen.
    Lue.java tiedostossa on tuo Lue.rivi()
    joka lukee rivin.

    String tmp="";
    for (rivi = 0; rivi < m; rivi )
    {
    System.out.println("Anna rivi " rivi ": ");
    tmp=Lue.rivi();

    // pistä merkit taulukkoon
    for(int q=0;q

    Äänestä

  • ehkänäin kirjoitti:

    lue vaikka String ja kopsaa sitten t:hen.
    Lue.java tiedostossa on tuo Lue.rivi()
    joka lukee rivin.

    String tmp="";
    for (rivi = 0; rivi < m; rivi )
    {
    System.out.println("Anna rivi " rivi ": ");
    tmp=Lue.rivi();

    // pistä merkit taulukkoon
    for(int q=0;q

    aijai, jos jorma l. näkisi tämän... ei varmaan plagioida webistä niitä harkkatöitä! t: tietojenkäpistelijä

    Äänestä

Hähä. Näyttää kovasti eräältäkin Tampereen yliopiston tietojenkäsittelytieteen laitoksen ohjelmointikurssin harjoitustyöltä, tämä.

Kannattaa käyttää sen In-luokan readString()-metodia, joka lukee merkkijonon yksittäisen merkin sijasta. :)

Tämän jälkeen, jos tykkäät, voit readStringin palauttamasta String-oliosta nyhjäistä toCharArray()-metodilla yhtä riviä vastaavan char-taulukon. Vaikkapa siten että:

mur = In.readString();
t[rivi] = blargh.toCharArray();

Kannattaa kuitenkin tuossa välissä testata että sieltä on luettu sellainen oikeanmallinen rivi. Muuten tulee ongelmia.

Äänestä

Kommentoi aloitusta


Saapas kirjoitti:

Harkkatyön tekeminen tyssäsi heti alkuunsa, kun taulukon täyttämisessä tuli pienoinen ongelma..
----------------------------------
Siis tällaista pitäisi saada näytölle:
Tämä on yksinkertainen muistipeli.
Anna rivien lkm:
3
Anna sarakkeiden lkm:
2
Anna rivi 1:
ab
Anna rivi 2:
ca
Anna rivi 3:
bc
-----------------------

Kyhäilemäni metodin runko on tässä, mutta miten arvon lukeminen pitäisi tehdä, kun syötteet annetaan näin riveittäin (yllä)?!

public static void taytaKentta(char[][] t, int m, int n) {
// Silmukoinnissa tarvittavat muuttujat.
int rivi, sarake;

// Tehdään jotain vain jos taulukolle on varattu muistia.
if (t != null) {
for (rivi = 0; rivi < m; rivi )
for (sarake = 0; sarake < n; sarake ) {
// Luetaan arvo.
System.out.print("Anna rivi " rivi ": ");
t[rivi][sarake] = In.readChar();

Auttaisiko joku osaava ihminen minua korjaamaan tämän koodin, olisin erittäin kiitollinen!!:o)

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