20 svar
384 visningar
blygummi 10
Postad: 11 feb 2019

Variabelproblem

Kod just nu: https://hastebin.com/goguyotowe.java

Uppgift: Användare skriver in ett datum på formen "ÅÅÅÅ-MM-DD". Får ett svar där det anges vilken dag i veckan det angivna datumet var. 1754, Jan 1 var en tisdag. 

Har just nu:

1. En metod för att beräkna om det angivna året är ett skottår.

2. En metod för att beräkna antalet dagar i det aktuella året, för både skottår och normala år.

Exempelvis innehåller 2001-01-23, 23 st dagar.

in taktik: 

1. Gör om inputen till en Integer.

2. Skapa en for-loop där jag börjar på år det angivna året intIndata1, fortsätter loopa t.o.m. då intIndata1 == 1754, enligt intIndata1 = intIndata1 -1. (Jag får korrigera för värden under 1754, då dessa aldrig kommer att uppfylla villkoret) Om året i fråga är ett skottår, addera 366 till variabeln "summation", om det är ett normalt år, addera 365 till variabeln summa. 

3. Summera "summation" + "(med hjälp av en metod få fram dagen i aktuella året - har den)

4. totAntalDagar % 7 == Antingen 0,1,2,3,4,5,6 , beroende på tag, ansätt korrekt dag.

5. Visa dagen i ett meddelande.

Behöver hjälp med:

1. Variabeln "intIndata" på rad 40. Det visar fel. "Syntax error on token "intIndata", ++ expected after this token." Jag vet inte varför det blir så. Om while loopen (på line 21-38) inte skulle genomföras skulle inIndata1 användas på rad 16 (har man angivit ett nummer större än 1754 borde den nästan därefter fungera efter jag applicerat metoden för att beräkna dagar i det aktuella året)

2. Andra tips.

 

- Tack på förhand. 

emilg 87
Postad: 11 feb 2019

15 år sedan jag läste Java-kod men kan man skriva for(intIndata1; ...) ? Prova for(; ... istället, första platsen i for-loopen är väl till för att initiera variabler, men den är redan initierad.

Sen 1754 == intIndata1, jag gissar att du inte vill att loopen endast ska köras när intIndata1 = 1754, utan istället om intIndata1 är större lika med 1754?

Laguna 3301
Postad: 11 feb 2019

I språket C får man ha vad som helst i sista klausulen (eller vad det heter) i en for-loop, men av vad du berättar så kan det vara så att det bara får vara variabel++ eller variabel-- där, så prova intIndata--.

Jag har inte inspekterat algoritmen. Återkom om koden går att köra och gör fel.

blygummi 10
Postad: 11 feb 2019

Intressant. Men vilken är initieringsvariabeln i detta fall då? Är den intIndata1? 

emilg 87
Postad: 11 feb 2019

En normal for-loop ser ju ut så här for(int i=0;i<n;i++) t.ex. Då är i initierad i första delen "int i=0". Men då du redan initierat intIndata1 längre upp i koden behövs inget där. Om det inte är så att det krävs av Java...

Laguna 3301
Postad: 11 feb 2019
blygummi skrev:

Intressant. Men vilken är initieringsvariabeln i detta fall då? Är den intIndata1? 

Det behöver inte stå nånting alls där (i första klausulen i for-loopen alltså). intIndata1 har väl fått sitt startvärde redan?

blygummi 10
Postad: 11 feb 2019

Det röda försvann men koden fastnar vid dialogrutan och promptar den hela tiden. Ändrade lite i koden och ser ut såhär nu: 

https://hastebin.com/imecudutek.java

blygummi 10
Postad: 11 feb 2019 Redigerad: 11 feb 2019
Laguna skrev:
blygummi skrev:

Intressant. Men vilken är initieringsvariabeln i detta fall då? Är den intIndata1? 

Det behöver inte stå nånting alls där (i första klausulen i for-loopen alltså). intIndata1 har väl fått sitt startvärde redan?

 Javisst. Men hur vet Eclipse att jag refererar till till intIndata1 och inte exempelvis intIndata2? Ska jag anta att det per automatik gissar rätt?

Laguna 3301
Postad: 11 feb 2019

Jag gissar att det blir nåt exception vid inläsningen. Stoppa in spårutskrifter som skriver ut vad du just har läst in eller parsat, och skriv ut exceptionet också, om det inträffar.

blygummi 10
Postad: 11 feb 2019 Redigerad: 11 feb 2019

Ingen Exception, blir bara inte som jag vill enligt med koden jag skrivit. Det bara loopar "indata = JOptionPane.showInputDialog("Enter a date in the format YYYY-MM-DD");" av någon okänd anledning.

Laguna 3301
Postad: 11 feb 2019
blygummi skrev:
Laguna skrev:
blygummi skrev:

Intressant. Men vilken är initieringsvariabeln i detta fall då? Är den intIndata1? 

Det behöver inte stå nånting alls där (i första klausulen i for-loopen alltså). intIndata1 har väl fått sitt startvärde redan?

 Javisst. Men hur vet Eclipse att jag refererar till till intIndata1 och inte exempelvis intIndata2? Ska jag anta att det per automatik gissar rätt?

Vad refererar till intIndata1?

Laguna 3301
Postad: 11 feb 2019
blygummi skrev:

Ingen Exception, blir bara inte som jag vill enligt med koden jag skrivit. Det bara loopar "indata = JOptionPane.showInputDialog("Enter a date in the format YYYY-MM-DD");" av någon okänd anledning.

Stoppa in spårutskrifter som skriver ut vad du just har läst in eller parsat.

blygummi 10
Postad: 11 feb 2019
Laguna skrev:
blygummi skrev:
Laguna skrev:
blygummi skrev:

Intressant. Men vilken är initieringsvariabeln i detta fall då? Är den intIndata1? 

Det behöver inte stå nånting alls där (i första klausulen i for-loopen alltså). intIndata1 har väl fått sitt startvärde redan?

 Javisst. Men hur vet Eclipse att jag refererar till till intIndata1 och inte exempelvis intIndata2? Ska jag anta att det per automatik gissar rätt?

Vad refererar till intIndata1?

 for(startvärde, villkor, metod), hur vet Eclipse att jag refererar till intIndata1 som startvärde istället för ex. intIndata2 som startvärde när jag inte skriver något startvärde alls utan bara "for(;villkor,metod)"

blygummi 10
Postad: 11 feb 2019
Laguna skrev:
blygummi skrev:

Ingen Exception, blir bara inte som jag vill enligt med koden jag skrivit. Det bara loopar "indata = JOptionPane.showInputDialog("Enter a date in the format YYYY-MM-DD");" av någon okänd anledning.

Stoppa in spårutskrifter som skriver ut vad du just har läst in eller parsat.

 Tack för tipset, jag får återkomma efter jag felsökandet.

Laguna 3301
Postad: 11 feb 2019
blygummi skrev:
Laguna skrev:
blygummi skrev:
Laguna skrev:
blygummi skrev:

Intressant. Men vilken är initieringsvariabeln i detta fall då? Är den intIndata1? 

Det behöver inte stå nånting alls där (i första klausulen i for-loopen alltså). intIndata1 har väl fått sitt startvärde redan?

 Javisst. Men hur vet Eclipse att jag refererar till till intIndata1 och inte exempelvis intIndata2? Ska jag anta att det per automatik gissar rätt?

Vad refererar till intIndata1?

 for(startvärde, villkor, metod), hur vet Eclipse att jag refererar till intIndata1 som startvärde istället för ex. intIndata2 som startvärde när jag inte skriver något startvärde alls utan bara "for(;villkor,metod)"

Allting har ju de värden de ska ha redan. Inget behöver initieras. 

blygummi 10
Postad: 13 feb 2019
Laguna skrev:
blygummi skrev:
Laguna skrev:
blygummi skrev:
Laguna skrev:
blygummi skrev:

Intressant. Men vilken är initieringsvariabeln i detta fall då? Är den intIndata1? 

Det behöver inte stå nånting alls där (i första klausulen i for-loopen alltså). intIndata1 har väl fått sitt startvärde redan?

 Javisst. Men hur vet Eclipse att jag refererar till till intIndata1 och inte exempelvis intIndata2? Ska jag anta att det per automatik gissar rätt?

Vad refererar till intIndata1?

 for(startvärde, villkor, metod), hur vet Eclipse att jag refererar till intIndata1 som startvärde istället för ex. intIndata2 som startvärde när jag inte skriver något startvärde alls utan bara "for(;villkor,metod)"

Allting har ju de värden de ska ha redan. Inget behöver initieras. 

 Okej. Jag är med på att allt har de värden som det ska ha. Men hur vet Eclipse vilket av de värden som redan är vad dom är som det ska referera till såsom startvärdet i for-loopen?

Laguna 3301
Postad: 13 feb 2019
blygummi skrev:
Laguna skrev:
blygummi skrev:
Laguna skrev:
blygummi skrev:
Laguna skrev:
blygummi skrev:

Intressant. Men vilken är initieringsvariabeln i detta fall då? Är den intIndata1? 

Det behöver inte stå nånting alls där (i första klausulen i for-loopen alltså). intIndata1 har väl fått sitt startvärde redan?

 Javisst. Men hur vet Eclipse att jag refererar till till intIndata1 och inte exempelvis intIndata2? Ska jag anta att det per automatik gissar rätt?

Vad refererar till intIndata1?

 for(startvärde, villkor, metod), hur vet Eclipse att jag refererar till intIndata1 som startvärde istället för ex. intIndata2 som startvärde när jag inte skriver något startvärde alls utan bara "for(;villkor,metod)"

Allting har ju de värden de ska ha redan. Inget behöver initieras. 

 Okej. Jag är med på att allt har de värden som det ska ha. Men hur vet Eclipse vilket av de värden som redan är vad dom är som det ska referera till såsom startvärdet i for-loopen?

Vad menar du med startvärde i for-loopen?

blygummi 10
Postad: 13 feb 2019
Laguna skrev:
blygummi skrev:
Laguna skrev:
blygummi skrev:
Laguna skrev:
blygummi skrev:
Laguna skrev:
blygummi skrev:

Intressant. Men vilken är initieringsvariabeln i detta fall då? Är den intIndata1? 

Det behöver inte stå nånting alls där (i första klausulen i for-loopen alltså). intIndata1 har väl fått sitt startvärde redan?

 Javisst. Men hur vet Eclipse att jag refererar till till intIndata1 och inte exempelvis intIndata2? Ska jag anta att det per automatik gissar rätt?

Vad refererar till intIndata1?

 for(startvärde, villkor, metod), hur vet Eclipse att jag refererar till intIndata1 som startvärde istället för ex. intIndata2 som startvärde när jag inte skriver något startvärde alls utan bara "for(;villkor,metod)"

Allting har ju de värden de ska ha redan. Inget behöver initieras. 

 Okej. Jag är med på att allt har de värden som det ska ha. Men hur vet Eclipse vilket av de värden som redan är vad dom är som det ska referera till såsom startvärdet i for-loopen?

Vad menar du med startvärde i for-loopen?

 https://www.w3schools.com/js/js_loop_for.asp  "Statement 1 is executed (one time) before the execution of the code block." Om jag inte skriver något för "Statement 1" vilket av de initierade "Statementsen" blir det som då används i "Statement 1"?

Laguna 3301
Postad: 13 feb 2019
blygummi skrev:
Laguna skrev:
blygummi skrev:
Laguna skrev:
blygummi skrev:
Laguna skrev:
blygummi skrev:
Laguna skrev:
blygummi skrev:

Intressant. Men vilken är initieringsvariabeln i detta fall då? Är den intIndata1? 

Det behöver inte stå nånting alls där (i första klausulen i for-loopen alltså). intIndata1 har väl fått sitt startvärde redan?

 Javisst. Men hur vet Eclipse att jag refererar till till intIndata1 och inte exempelvis intIndata2? Ska jag anta att det per automatik gissar rätt?

Vad refererar till intIndata1?

 for(startvärde, villkor, metod), hur vet Eclipse att jag refererar till intIndata1 som startvärde istället för ex. intIndata2 som startvärde när jag inte skriver något startvärde alls utan bara "for(;villkor,metod)"

Allting har ju de värden de ska ha redan. Inget behöver initieras. 

 Okej. Jag är med på att allt har de värden som det ska ha. Men hur vet Eclipse vilket av de värden som redan är vad dom är som det ska referera till såsom startvärdet i for-loopen?

Vad menar du med startvärde i for-loopen?

 https://www.w3schools.com/js/js_loop_for.asp  "Statement 1 is executed (one time) before the execution of the code block." Om jag inte skriver något för "Statement 1" vilket av de initierade "Statementsen" blir det som då används i "Statement 1"?

Som du ser en bit upp här ovan så skrev jag att det inte behöver stå någonting alls där.

blygummi 10
Postad: 3 dagar sedan

Okej! Men om man inte skriver något alls, vad innebär det? Att ingen första påstående exekveras innan "the code block"? Jag vill bara räkna antalet dagar mellan året jag angav och 1754. Detta är metoden nu. Det enda jag kan tänka mig vara felaktigt nu är for-loopen. Resultatet som jag får är bara en upprepning av JOptionPane

https://hastebin.com/fehideqaka.java

Laguna 3301
Postad: 2 dagar sedan

Det verkar omöjligt att det ska bli fel. Speciellt då har man nytta av spårutskrifter så man ser vad som faktiskt händer. 

Svara Avbryt
Close