Har gjort ett program för att hantera datum, kontrollera om de är korrekta, packa dem från heltalen år,månad,datum till en sträng. Sedan en metod för att lägga till en dag, dock utan hänsyn till skottår.. dvs, om datumet är 31 och månaden 1,3 bla bla så blir datumet 1 och månaden++, med undantag för månad 12 då året blir++, och månad&datum blir 1.. i alla fall, stöter på konstiga errors, "illegal start of expression", samt "")" expected".. pejstar koden med pekare på errorsen, obs 2st illegal st of exp, och 1 ")" exp..:
Datum.java
import extra.*;
public class Datum {
private int ar, manad, dag;
// private String s_ar, s_manad, s_dag;
public Datum(int a, int m, int d){ //skapa ett datum
ar = a;
manad = m;
dag = d;
}
/* Metoden ska testa om ett datum är korrekt, den behöver dock inte ta
hänsyn till skottår. */
//public boolean korrektDatum(d_ar, d_manad, d_dag){
public void korrektDatum(int a_ar, int a_manad, int a_dag){
//int m00;
String t;
if (a_ar > 0 && a_manad > 0 && a_manad <= 12 && a_dag > 0 && a_dag <=31 ){
//return true;
//m00=1;
t = "Rätt";
Std.out.println(t);
}
else{
//return false;
//m00=0;
t = "Fel";
Std.out.println(t);
}
}
/* Metoden ökar datumet med en dag. Behöver ej ta hänsyn till skottår. */
public void adderaDag(){
if (manad == 1 || manad == 3 || manad == 5 || manad == 7 || manad == 8 || manad == 10 || manad == 12 ||){
if(dag == 31){
dag = 1;
manad++;
}
a_dag++;
Std.out.println("Datumet har blitt: " + ar + "." + manad + "." + dag + "!!¤#");
}
if(manad == 2){
if(dag == 28){
dag = 1;
manad++;
}
dag++;
Std.out.println("Datumet har blitt: " + ar + "." + manad + "." + dag + "!!¤#");
}
if (manad == 4 || manad == 6 || manad == 9 || manad == 11){
if(dag == 30){
dag = 1;
manad++;
}
dag++;
Std.out.println("Datumet har blitt: " + ar + "." + manad + "." + dag + "!!¤#");
}
if (manad == 12){
if (dag == 31){
dag = 1;
manad = 1;
ar++;
}
dag++;
Std.out.println("Datumet har blitt: " + ar + "." + manad + "." + dag + "!!¤#");
}
}
/* Metoden "packar ihop" år, månad och dag och returnerar ett heltal på
formatet XXXXYYZZ där XXXX är årtalet,
YY månaden och ZZ dagen, t ex 19961124 */
//public int packaDatum(){
public String packaDatum(int a_ar, int a_manad, int a_dag){
String c_manad = "" + a_manad;
String c_dag = "" + a_dag;
if(a_manad<10){
c_manad = "0" + a_manad;
}
if(a_dag<10){
c_dag = "0" + a_dag;
}
String packatDatum;
packatDatum = "" + a_ar + c_manad + c_dag;
return packatDatum;
}
}
Datumtest.java
import extra.*;
public class Datumtest{
public static void main (String[] arg) {
int i=1, d_ar, d_manad, d_dag;
do{
Std.out.print("Vill du köra ett nytt datumtest? 1=ja, 0=nej: ");
i = Std.in.readInt();
Std.in.skipLine();
if (i == 1){
Std.out.println("Ange datumet enligt ÅÅÅÅ MM DD: ");
d_ar = Std.in.readInt();
d_manad = Std.in.readInt();
d_dag = Std.in.readInt();
Datum d1 = new Datum(d_ar, d_manad, d_dag);
Std.out.println("Datumet på formen XXXXMMDD");
Std.out.println(d1.packaDatum(d_ar, d_manad, d_dag));
d1.korrektDatum(d_ar,d_manad,d_dag);
//if (super.m00 i == 1){
adderaDag();
Std.out.println(d1.packaDatum(d_ar, d_manad, d_dag));
//}
}
} while (i == 1);
} // main
} // class
psst, programmet fungerar när jag kommenterar bort metoden adderaDag() i Datum.java, samt antopet till densamme, från Datumtest.java... någon idé?
det har du rätt i, missade det i just det fallet, men Datum klassen går ju i alla fall inte att kompilera, felen med "Illegal start ..." kvarstår, alla 3 felen.. En annan sak också, hur kan man göra om public void korrektDatum() till public boolean korrektDatum()?
Felen finns enligt JCreator här:
import extra.*;
public class Datum {
private int ar, manad, dag;
// private String s_ar, s_manad, s_dag;
public Datum(int a, int m, int d){ //skapa ett datum
ar = a;
manad = m;
dag = d;
}
/* Metoden ska testa om ett datum är korrekt, den behöver dock inte ta
hänsyn till skottår. */
//public boolean korrektDatum(.....){
public void korrektDatum(int a_ar, int a_manad, int a_dag){
//int m00;
String t;
if (a_ar > 0 && a_manad > 0 && a_manad <= 12 && a_dag > 0 && a_dag <=31 ){
//return true;
//m00=1;
t = "Rätt";
Std.out.println(t);
}
else{
//return false;
//m00=0;
t = "Fel";
Std.out.println(t);
}
}
/* Metoden ökar datumet med en dag. Behöver ej ta hänsyn till skottår. */
public void adderaDag(){
/*FEL NR1###*/ if (manad == 1 || manad == 3 || manad == 5 || manad == 7 || manad == 8 || manad == 10 || manad == 12 ||){
if(dag == 31){
dag = 1;
manad++;
}
a_dag++;
Std.out.println("Datumet har blitt: " + ar + "." + manad + "." + dag + "!!¤#");
}
if(manad == 2){
if(dag == 28){
dag = 1;
manad++;
}
dag++;
Std.out.println("Datumet har blitt: " + ar + "." + manad + "." + dag + "!!¤#");
}
if (manad == 4 || manad == 6 || manad == 9 || manad == 11){
if(dag == 30){
dag = 1;
manad++;
}
dag++;
Std.out.println("Datumet har blitt: " + ar + "." + manad + "." + dag + "!!¤#");
}
if (manad == 12){
if (dag == 31){
dag = 1;
manad = 1;
ar++;
}
dag++;
Std.out.println("Datumet har blitt: " + ar + "." + manad + "." + dag + "!!¤#");
/*FEL NR2###*/ }
/*FEL NR3###*/ }
/* Metoden "packar ihop" år, månad och dag och returnerar ett heltal på
formatet XXXXYYZZ där XXXX är årtalet,
YY månaden och ZZ dagen, t ex 19961124 */
//public int packaDatum(){
public String packaDatum(int a_ar, int a_manad, int a_dag){
String c_manad = "" + a_manad;
String c_dag = "" + a_dag;
if(a_manad<10){
c_manad = "0" + a_manad;
}
if(a_dag<10){
c_dag = "0" + a_dag;
}
String packatDatum;
packatDatum = "" + a_ar + c_manad + c_dag;
return packatDatum;
}
}
Vill ju köra programmet, packa datumet, skriva ut det på nytt och markera om det är korrekt eller inkorrekt, just nu är det Rätt och Fel som skrivs ut, men det skall ges via en boolean i Datum.java. Sedan skall datumet uppdateras med 1 dag, genom kontrollen i medoten adderaDag i Datum.java, och sedan skrivas ut på nytt(med 1 extra dag då.)..
Börja med att ta bort det sista || vid fel nr 1.
En bit under fel nr 1 finns det en variabel som heter a_dag, den heter i den här klassen dag, samma sak i nästa if sats.
har 1 till frågor angående ovanstående.. har fått till så att programmet funkar nu, men OM jag vill hämta ut det nya uppdaterade datumet, och packa det, som jag gjorde med det första datumet, skapat i datumtest, hur går jag till väga?
268 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25