Eli tehtävänäni on kyhätä kalenteri, joka kysyy käyttäjältä vuoden, kuukauden ja päiväyksen. Ohjelman tulisi kertoa käyttäjälle, mikä viikonpäivä on kyseessä. (Myös kuukausi ja vuosi tulostettava, mutta sehän ei ole ongelma)
Olen keksinyt, miten tutkin karkausvuodet yms., mutta en keksi, minkälaisella silmukalla tms. saisin tutkittua aina kyseisen päivän. Eli onko olemassa joku tietty säännönmukaisuus, jonka välein esim kuun ekapäivä on tietty yms.
Pikkusetkin vinkit ovat tervetulleita. Meinaa olla pikkusen kiire tämän harjotustyön kans. Kurssi vaan kiinni ennää harjotustyöstä. En aijo jatkaa ohjelmointia peruskurssia pidemmälle, joten että tee minulle hallaa, vaikka kertoisittekin reilusti vinkkejä. Pakko vaan saaha tämä kurssi alta pois.
Kiitos vinkeistä jo etukäteen!
-Jolle-
Olen keksinyt, miten tutkin karkausvuodet yms., mutta en keksi, minkälaisella silmukalla tms. saisin tutkittua aina kyseisen päivän. Eli onko olemassa joku tietty säännönmukaisuus, jonka välein esim kuun ekapäivä on tietty yms.
Pikkusetkin vinkit ovat tervetulleita. Meinaa olla pikkusen kiire tämän harjotustyön kans. Kurssi vaan kiinni ennää harjotustyöstä. En aijo jatkaa ohjelmointia peruskurssia pidemmälle, joten että tee minulle hallaa, vaikka kertoisittekin reilusti vinkkejä. Pakko vaan saaha tämä kurssi alta pois.
Kiitos vinkeistä jo etukäteen!
-Jolle-
Vastaukset 7
Vanhimmat
Piti, perkeleen ääliö, jättää taas niin viime tippaan? Syytä itseäsi!
Tsekkaa Javan omat luokat Date ja Calendar. Voit luoda Date-objektin tietyllä päivämäärällä, esim 18.6.1941, ja kysyä sitten oliolta, että mikäs viikonpäivä oli kyseessä. 18.6.1941 oli Date-luokan mukaan sunnuntai...
Kaikki Java VM:t eivät osaa ottaa huomioon karkaussekunteja jne. Eli oma implementaatio voisi olla paikallaan...
Laitoin muuten Googleen hakusanoiksi "how to determine day of week" ja vastaukseksi tuli:
http://www.mcs.csuhayward.edu/~malek/Mathlinks/Weekdays.html
Ja googlen osoitehan ei sitten ole muuttunut viime kerrasta: http://www.google.fi
Auttakaa, please!!
Eli pitäs tehä kalenteri, joka kertoo 1900-luvun päivän. Löysin tämmösen koodinpätkän, josta aattelin lähtä vähentään tavaraa, jos sattus saamaan ohjelman vaikka siten kasaan. En vaan tiiä mitä tälle pitäs tehä, että menis kääntäjästä läpi. Jos joku pystyy pikasella silmäyksellä sanomaan, mikä mättää, nii ois kiva.:)
Fani kerto edelliselle jotaki nuista luokista, nii voiko niie avulla saada sitten helposti ohjelman kasaan. En ymmärrä niistä kyllä mitään. Siis mulla ois varmaa aika samanlainen tehtävä, ku tuolla oliko se nyt jolle. Eli pitää laatia ohjelma, joka suorittaa 1900-luvun päiväyksille seuraavanlaisia muunnoksia: 080983 muotoon TORSTAI SYYSKUUN 8. PÄIVÄ 1983.
Ohjelma hyväksyy syötteiksi vain oikeita päiväyksiä. Vääristä päiväyksistä tulee virheilmoitukset. Ohjelma toimii silmukassa: käyttäjä voi valita, ottaako uuden muunnoksen vai lopettaako ohjelman.
(1.1.1900 oli maanantai)
Mutta tässä tämä yks ohjelmanpätkä, jonka haluaisin saaha käännettyä:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Collection;
import java.util.EmptyStackException;
import java.util.Iterator;
import java.util.Stack;
import javax.swing.*;
import java.awt.*;
import java.util.GregorianCalendar;
import java.util.Calendar;
public class KalenteriM extends JPanel {
//OMINAISMUUTTUJAT:
int[][] päivät; //taulukko johon kuukauden päivien numerot tallentuvat
public Calendar nyt;
//String- ja int-taulukot päivien ja kuukausien nimien sekä päivien lukumäärän ilmoittamiseen
public static final String[] PÄIVÄT = {"Sunnuntai", "Maanantai", "Tiistai", "Keskiviikko", "Torstai", "Perjantai", "Lauantai"};
public static final String[] KUUKAUDET = {"Tammi", "Helmi", "Maalis", "Huhti", "Touko", "Kesä", "Heinä", "Elo", "Syys", "Loka", "Marras", "Joulu"};
public static final int[] KKPÄIVÄT = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int päiviäKkssa; //päiviä kuukaudessa
String päivä; //kuukauden päivä
int ekaPäivä; //kk:n ensimmäinen viikonpäivä
int alkMäär; //tarvittavien rivien määrä
Ajettava omaPääohjelma;
//Käyttäjän syöttämät tiedot, alustetaan tämänhetkiksi
int käytKk;
int käytVuosi;
int rivilkm; //kuukaudessa olevien viikkojen määrä, vajaat viikot lasketaan mukaan
KalenteriRuutu[][] omatBnit; //taulukko johon KalenteriRuutu-oliot tallennetaan
//KONSTRUKTORIT:
//konstruktori 1, luo kalenterin nykyhetkeen
public KalenteriM(Ajettava po) {
this.omaPääohjelma = po;
//Calendar-olio, jolla saadan tämähetkinen aika
this.nyt = GregorianCalendar.getInstance();
this.käytKk = nyt.get(Calendar.MONTH);
this.käytVuosi = nyt.get(Calendar.YEAR);
this.rivilkm = rivienMäärä(käytVuosi, käytKk);
this.päiviäKkssa = päiviäKuukaudessa(käytVuosi, käytKk);
teeIntTaulukko();
this.setLayout(new GridLayout((rivilkm 1), 7));
omatBnit = new KalenteriRuutu[rivilkm][7];
for (int i = 0; i < rivilkm; i ) {
for (int j = 0; j < 7; j ) {
this.omatBnit[i][j] = (new KalenteriRuutu(this, String.valueOf(päivät[i][j])));
}
}
for (int i = 0; i < 7; i ) {
this.add(new JLabel(PÄIVÄT[i]));
}
for (int i = 0; i < (rivilkm); i ) {
for (int j = 0; j < 7; j ) {
this.add(omatBnit[i][j]);
}
}
this.omaPääohjelma.alapanel.add(this); //lisätään kalenteri päähjelmaan
//PRINTIT
/*
for (int i = 0; i < rivilkm; i ) {
for (int j = 0; j < 7; j ) {
System.out.println(päivät[i][j]);
}
}
*/
}
//konstruktori 2, luo kalenterin syötetiedoilla
public KalenteriM(Ajettava po,int vuosi, int kk) {
this.omaPääohjelma = po;
this.nyt = new GregorianCalendar(vuosi, kk, 1);
this.käytKk = nyt.get(Calendar.MONTH);
this.käytVuosi = nyt.get(Calendar.YEAR);
this.rivilkm = rivienMäärä(käytVuosi, käytKk);
this.päiviäKkssa = päiviäKuukaudessa(käytVuosi, käytKk);
teeIntTaulukko();
this.setLayout(new GridLayout((rivilkm 1), 7));
omatBnit = new KalenteriRuutu[rivilkm][7];
for (int i = 0; i < rivilkm; i ) {
for (int j = 0; j < 7; j ) {
this.omatBnit[i][j] = (new KalenteriRuutu(this, String.valueOf(päivät[i][j])));
}
}
for (int i = 0; i < 7; i ) {
this.add(new JLabel(PÄIVÄT[i]));
}
for (int i = 0; i < (rivilkm) ; i ) {
for (int j = 0; j < 7; j ) {
this.add(omatBnit[i][j]);
}
}
this.omaPääohjelma.alapanel.add(this);
}
//METODEJA
//laskee kuinka monta riviä kalenteriin tarvitaan, mahdollisia vaihtoehtoja 4, 5, 6
private int[][] teeIntTaulukko() {
int eka = laskeKkEka(this.käytVuosi, this.käytKk);
päivät = new int[this.rivilkm][7];
int nro = 1;
this.päiviäKkssa = päiviäKuukaudessa(käytVuosi, käytKk);
int tyhjät = (eka - 1);
for (int i = 0; i < tyhjät; i ) {
päivät[0][i] = 0;
}
//eka rivi
while (eka
Tuota ohjelmaa et saa yksinään käännettyä mitenkään. Tarvitset tuon tiedoston lisäksi tiedostot Ajettava.java ja KalenteriRuutu.java. Kopsaa ensin nekin kaveriltasi :D ja koita sitten kääntämistä uudelleen...
Antaa ne viikonpäivät ihan lontoon kielellä. Sille syötetään vaan päivämäärä ja se kertoo viikonpäivän. Laskee ite karkauspäivätkin.
java.sun.com ja API esille.
Voisko joku ystävällisesti kirjottaa jonku esimerkin tommosen luokan käytöstä, nii saattasin sitten saaha jotaki aikaseksikki. Eli miten tuohon luetaan päiväys ja miten sen saa tulostaan sen. Ilmeisesti sinne alkuun pitää kirjottaa jotain import java.io.*; :n lisäksi?
Kiitti!!
http://java.sun.com/j2se/1.4.2/docs/api/java/util/GregorianCalendar.html