Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Apr 2009

Java

Hej!!

Jag skulle bli väldigt tacksam om någon kunde hjälpa mig. Jag har ett projekt arbete som skall vara klart idag. Så snälla någon, hjälp!!!

Jag håller på att göra ett program som skall visa tiden av det här formatet; åååå-mm-dd tt:mm:ss

Jag har stött på ett problem. Som bekant har inte alla månader 31 dagar.

Så till min fråga. Hur gör jag för att få programet att räkna månaderna utefter hur många dagar det är i dom. Sedan till nästa problem, skottår??

Här nedan kan ni se den delen av mitt program som skall sköta räkningen av dagar, mån osv

public void räknare() { s = s + 1; if (s==60) { s = 0; min = min + 1; if (min==60) . { min = 0; t = t + 1; } if (t==24) { t = 0; d = d + 1; } if (d==31) { d = 0; m = m + 1; } if (m==12) { m = 0; å = å + 1; }}

Är jättetacksam för alla svar

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Maj 2007

Vad är det du försöker göra? Varför använder du inte java.util.Calendar?

För att ge lite tips, om det är så att ni inte _får_ använda er av Calendar:
Lagra antalet dagar för månaderna i en array;

int[] months = new int[12]; months[0] = 31; // Januari months[1] = 28; // Februari months[2] = 31; // Mars ...

För att sedan kolla om februari är förlängd (skottår), så finns det ett knep. Det är skottår vart fjärde år, men vart hundrade år är det inte det. Så använd modulus för att se om det är skottår.

int year = 2008; if (year % 4 == 0 && year % 100 != 0) // Skottår!

Översättning i klartext:

Året är 2008 Om 2008 delat med 4 inte lämnar rest och 2008 delat med 100 lämnar rest // Så är det skottår!

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Apr 2009

jag försöker göra en instansmetod till följande program:

import javax.swing.*; import java.util.*; import java.awt.*; import java.awt.event.*; public class Z { public static void main(String[] arg) { Klocka v = new Klocka(); } } class Klocka extends JFrame implements ActionListener { private Cal tid = new Cal(); private JLabel j; public Klocka() { javax.swing.Timer time = new javax.swing.Timer(1000, this); time.start(); Calendar kalender = Calendar.getInstance(TimeZone.getTimeZone("ECT")); tid.sätt(kalender.get(Calendar.YEAR), kalender.get(Calendar.MONTH), kalender.get(Calendar.DAY_OF_MONTH), kalender.get(Calendar.HOUR_OF_DAY), kalender.get(Calendar.MINUTE), kalender.get(Calendar.SECOND)); j = new JLabel(tid.toString(), JLabel.CENTER); Color rosa = new Color(255, 105, 180); getContentPane().add(j); j.setOpaque(true); j.setBackground(Color.black); j.setForeground(rosa); j.setFont(new Font("Forte", Font.BOLD, 36)); setSize(400, 75); setLocation(200, 200); setVisible(true); setDefaultCloseOperation(EXIT_ON_CLOSE); } public void actionPerformed(ActionEvent e) { tid.räknare(); j.setText(tid.toString()); }}

min metod ser ut på följande vis.

public class Cal { private int å, m, d, t, mi, s; public Cal() {} public Cal (int år, int mån, int dag, int tim, int min, int sek) { sätt(år, mån, dag, tim, min, sek); } public void sätt (int år, int mån, int dag, int tim, int min, int sek) { if (år>=0 && mån>=0 && mån<=12 && dag>=0 && dag<31 && tim>=0 && tim<24 && min>=0 && min<60 && sek>=0 && sek<60) { å=år; m=mån; d=dag; t=tim; mi=min; s=sek; } else System.out.println("Error"); } public String toString() { String form = å + "-" + m + "-" + d + " " + t + ":" + mi + ":" + s; return form; } public void räknare() { s = s + 1; if (s==60) { s = 0; mi = mi + 1; if (mi==60) { mi = 0; t = t + 1; } if (t==24) { t = 0; d = d + 1; } if (d==31) { d = 0; m = m + 1; } if (m==12) { m = 0; å = å + 1; } if (å==2040) System.out.println("I år fyller jag 50!!"); } } public void räknare(int sekunder){ while (sekunder>0) { räknare(); sekunder = sekunder -1; } } }

men ser det ut så här så kommer programmet visa fel på månaderna i o m att nu berättar det att varje månad har 31 dagar.

hjälp...snälla...