Behöver hjälp me java app - ta emot o konvertera datumet

Trädvy Permalänk
Medlem
Plats
Hell/Heaven
Registrerad
Jun 2009

Behöver hjälp me java app - ta emot o konvertera datumet

Hej Alla!

Det är mitt första post! Jag pluggar en java kurs och behöver lite råd.
som en uppgift jag ska bygga en app, som:
1.först frågar om vilken datum format jag vill använda (1-MM/DD/YYYY, 2-June 14, 1992, 3-exit)
2.sen ska den fråga om input (i det valda formatet) - frågar om input tre gnger (month, day, year)
3. ska visa datumet i båda format

Jag har inte pluggat java alls länge o trots att jag hade suttit 12h om dagn senaste dagar har jag fortfarande stora problem me att begripa saker o ting, som set get, arrays, passing etc. o därför ber jag om hjälp.

System.out.print("Choice: "); int choice = Integer.parseInt(input.readLine()); choice = c;

nu borde väl komma ngt me
if c == 1 då
if c == 2 då ...
if c == 3 då break
eller ska man använda switch med case 1, 2 o 3 , men då behöver jag en array, eller?

o sen låt säga att det e c==1, hur ska man peka att den ska fråga om månad i typ string eller integer

file Date.java

public class Date { private int month; private int day; private int year; public Date() { this( 0, 0, 0 ); } public Date( int m ) { this ( m, 0, 0 ); } public Date( int m, int d ) { this( m, d, 0 ); } public Date( int m, int d, int y ) { setDate( m, d, y ); } public Date( Date date ) { this( date.getMonth(), date.getDay(), date.getYear() ); } public void setDate( int m, int d, int y ) { setMonth( m ); setDay( d ); setYear( y ); } public void setMonth( int m ) { if ( m > 0 && m <= 12 ) return m; else { System.out.printf("Invalid month (%d) set to 1.", testMonth ); return 1; } } public void setDay( int d ) { int daysPerMonth[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; if ( setDay > 0 && setDay <= daysPerMonth[ m ] ) return setDay; if ( m == 2 && setDay == 29 && ( y % 400 == 0 || ( y % 4 == 0 && y % 100 != 0 ) ) ) return setDay; System.out.printf( "Invalid day (%d) set to 1.", setDay ); return 1; } public void setYear( int y ) { public int getYear() { return year; } public int getDay() { return day; } public int getMonth() { return month; } public String toDate() { return String.format( "%02d//%02d//%02d", getMonth(), getDay(), getYear() ); } public String toFullDate() { return String.format( ???? ); } }

men d saknar självklart ngt sånt:
public Date ( String mstr, int dd, int yy )
{ // check and convert mstr, dd, and yy and save them
// into month, day, and year member data.

}
men jag vet inte hur jag ska lägga till där

o en converter som jag vet inte dir hur jag ska göra.
man använder ngt equalIgnorecase o jämför me array. men jag vet inte hur man skriver, att jämför input me det som finns i array, o sen return i (dvs. dess nummer i arra; t.ex. om may, då may e på plats 5, så i=5)

file DataTest kommer väl va ngt sånt

public class Time2Test { public static void main( String args[] ) { System.out.println( "MM/DD/YYYY:" ); System.out.printf( " %s\n", s1.toDate() ); System.out.println( "Month DD, YYYY: " ); System.out.printf( " %s\n", s2.toFullDate() ); } }

men d saknar självklart s1 o s2 (men hur ska man lägga till det)?

Jag e tacksam för all hjälp.
Hoppas ni hör av er

Med Vänliga Hälsningar

Ernest

Trädvy Permalänk
Medlem
Plats
Höör
Registrerad
Jun 2002

Det där ser helt otroligt rörigt ut för en sån simpel uppgift.

Mitt tips: Sätt dig ner och rita upp händelseförloppet (optimalt från din sida) på ett papper. Inte i kod, utan som rutor med vad som händer från steg 1 till sista steget.

Planera vad du behöver för metoder och attribut, sedan sätt dig och implementera koden.

Typ:

class Datum { int day; int month; int year; input: välj format 1 eller 2, om 3 Exit. Mata in år; Mata in månad; Mata in dag; Om val == 1: Skriv ut år/månad/dag; Om val == 2; Skriv ut det på annat sätt; Avsluta.

Känns som du rör till det något brutalt (Sen kan du ju lägga till kontroller på input osv senare)

Citera mig för svar.
Arch Linux

Trädvy Permalänk
Medlem
Plats
Hell/Heaven
Registrerad
Jun 2009

hej! tack för tipset. jag e fullt medveten om att d här ser GANSKA rörigt ut... o jag ska nog följa ditt råd. problemet e att jag vet inte va jag ska använda. kan du tipsa mej om d? typ...vad sån uppgift ska använda.
(+jag fattar t.ex. inte varför man ska ha två filer - juu för att man kan inte ha två class i en fil- men ändå, det låter inte "övertygande" för min del - men jag vet oxo att d e typ REAL basic stuff, så att om man inte kan så kan man lika bra gå o skjuta sig sj ;S)

cheers!

Trädvy Permalänk
Medlem
Plats
Höör
Registrerad
Jun 2002
Citat:

Ursprungligen inskrivet av hehelol
hej! tack för tipset. jag e fullt medveten om att d här ser GANSKA rörigt ut... o jag ska nog följa ditt råd. problemet e att jag vet inte va jag ska använda. kan du tipsa mej om d? typ...vad sån uppgift ska använda.
(+jag fattar t.ex. inte varför man ska ha två filer - juu för att man kan inte ha två class i en fil- men ändå, det låter inte "övertygande" för min del - men jag vet oxo att d e typ REAL basic stuff, så att om man inte kan så kan man lika bra gå o skjuta sig sj ;S)

cheers!

Varför ska du ha 2 klasser?

Hjälpa dig med vad det ska använda? Är nog simplast att göra funktionaliteten själv, så lär du dig vad du gör

if (month == 1) {
skapa en sträng med innehållet Januari
}

Annars kolla upp JavaDocen, det lär finnas någon klass som redan gör detta. Dock är det bättre för din egen skull att göra det själv, i utbildningssyfte.

Citera mig för svar.
Arch Linux

Trädvy Permalänk
Medlem
Plats
Hell/Heaven
Registrerad
Jun 2009

hej

två klasser är kravet i uppgiften ( o exempel som finns i boken e gjord så me). grejen e att jag försökt bygga apps i 2-3v nu o jag hamnar bara till slut alltid me en gigantisk röra som jag skickar at the deadline o hoppas på att läraren förstår ngt av d.
o me den uppgiften har jag kämpat i ngra dagar nu o jag e nära att ge upp eftersom jag börjar förstå mindre ist för mer. därför ber jag om tips om hur man ska bygga sån app.
tack

cheers

Trädvy Permalänk
Medlem
Plats
Höör
Registrerad
Jun 2002
Citat:

Ursprungligen inskrivet av hehelol
hej

två klasser är kravet i uppgiften ( o exempel som finns i boken e gjord så me). grejen e att jag försökt bygga apps i 2-3v nu o jag hamnar bara till slut alltid me en gigantisk röra som jag skickar at the deadline o hoppas på att läraren förstår ngt av d.
o me den uppgiften har jag kämpat i ngra dagar nu o jag e nära att ge upp eftersom jag börjar förstå mindre ist för mer. därför ber jag om tips om hur man ska bygga sån app.
tack

cheers

Börja läsa din bok från början igen är då tipset!

Leta Java-guider på internet annars. Man måste verkligen sätta sig ner och fundera och grubbla när det gäller programmering, det är där många failar.

En annan gyllene regel är att planera först, skriva kod sen.
Börja gör det istället, och gör det RIKTIGT noggrant, sen kan du be om hjälp om specifika delar.

Lycka till!

Citera mig för svar.
Arch Linux

Trädvy Permalänk
Medlem
Plats
Kristianstad
Registrerad
Apr 2009

Gör en klass som håller datumet och returnerar datumen i en sträng beroende på formaten. Sen har du din start klass, som innehåller main. I den frågar du efter input och vilket datutformat. Sen skriver du ut datum strängen som du i din tur får från din datum klass.

Trädvy Permalänk
Medlem
Plats
Uppsala
Registrerad
Okt 2007

Re: Behöver hjälp me java app - ta emot o konvertera datumet

Citat:

Ursprungligen inskrivet av hehelol

nu borde väl komma ngt me
if c == 1 då
if c == 2 då ...
if c == 3 då break
eller ska man använda switch med case 1, 2 o 3 , men då behöver jag en array, eller?

o sen låt säga att det e c==1, hur ska man peka att den ska fråga om månad i typ string eller integer

Vid sådana här flervalsalternativ är switch case oftast bäst att använda, det kräver ingen array av något slag.

switch(c){ case '1': month = mataInMånadPåNågotSätt; day = mataInDagPåNågotSätt; year = mataInÅrPåNågotSätt; break; case '2': nästan som case 1; break; case '3': DagsAttSägaHejDå!; break; default: mataInEttGiltigtVärde!; }

Citat:

Ursprungligen inskrivet av hehelol

o en converter som jag vet inte dir hur jag ska göra.
man använder ngt equalIgnorecase o jämför me array. men jag vet inte hur man skriver, att jämför input me det som finns i array, o sen return i (dvs. dess nummer i arra; t.ex. om may, då may e på plats 5, så i=5)

file DataTest kommer väl va ngt sånt

gör en Array ungefär så här

String months[] = {"Jan", "Feb"... "Dec"};

I det första fallet är det ju bara kolla så att månaden är mellan 1 och 12, och hämta ut månaden ur
arrayen.

months[inmatadMånad-1];

anledningen till "-1" är ju att första positionen i arrayen är 0, medan man skriver månaden som 1.

I det andra fallet så får du loopa igenom månads-arrayen

loopa "i" från 0 till 11 kolla om months[i] == inMatadMånad (glöm inte att göra ignoreCase) månadsVariabel = i;

Hoppas att jag varit till någon hjälp

Trädvy Permalänk
Medlem
Registrerad
Jul 2004

Du borde kika på GregorianCalendar och SimpleDateFormat.

Ex:

GregorianCalendar date = new GregorianCalendar(2009, 3, 10);

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

System.out.println(format.format(date.getTime()));

Det skriver ut: 2009-04-10

Ändra i SimpleDateFormat-konstruktorn för annan formatering för datumrt!

Trädvy Permalänk
Medlem
Plats
Uppsala
Registrerad
Okt 2007
Citat:

Ursprungligen inskrivet av Kejsarn
Du borde kika på GregorianCalendar och SimpleDateFormat.

Ex:

GregorianCalendar date = new GregorianCalendar(2009, 3, 10);

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

System.out.println(format.format(date.getTime()));

Det skriver ut: 2009-04-10

Ändra i SimpleDateFormat-konstruktorn för annan formatering för datumrt!

Jag antar att själva uppgiften går ut på att skapa en egen funktion.

Jag skulle ha gjort något åt det här hållet. Nu gjorde jag det bara väldigt basic utan att prova och utan felhantering. Den biten får du klara själv.

public class Date { private int month; private int day; private int year; private String months[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul," "Aug", "Sep", "Oct", "Nov", "Dec"}; public Date(int m, int d, int y){ month = m; day = d; year = y; } public Date(string m, int d, int y){ for(int i = 0;i < months.length();i++){ if(months[i].compareToIgnoreCase(m-1) == 0){ month = i; day = d; year = y; } } } public void print(){ System.out.println(month + "/" + day + "/" + year); System.out.println(months[month] + " " + day + ", " + year); } }

Sen är det ju bara köra

Date temp = new Date(inmatadMånad, inmatadDag. inmatatÅr); temp.print();

Trädvy Permalänk
Medlem
Plats
Hell/Heaven
Registrerad
Jun 2009

men ... eftersom den ska va me overloaded constructor så : ...

public class Date
{
private int month;
private int day;
private int year;
private String months[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul," "Aug", "Sep", "Oct", "Nov",

public Date()
{
this( 0, 0, 0 );
}

public Date( int m )
{
this ( m, 0, 0 );
}

public Date( int m, int d )
{
this( m, d, 0 );
}

public Date( int m, int d, int y )
{
month = m;
day = d;
year = y;

setDate( m, d, y );
}

eller ?

tack så jätte mycket för era svar!

Trädvy Permalänk
Medlem
Plats
Uppsala
Registrerad
Okt 2007

Nu är jag väldigt dålig på termer och sånt, men var det inte overloaded constructor i min? Det betyder väl att man har flera metoder med samma namn men olika indata? Rätta mig om jag har fel.

Sen är den här lite överflödig om du tänker använda den

public Date( int m, int d, int y ) { month = m; day = d; year = y; setDate( m, d, y ); }

antingen får du ta bort

month = m;
day = d;
year = y;

och använda funktionen setDate, eller ta bort setDate( m, d, y );