21 svar
777 visningar
blygummi är nöjd med hjälpen
blygummi 216 – Fd. Medlem
Postad: 11 feb 2019 21:05

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 478
Postad: 11 feb 2019 21:25

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 28435
Postad: 11 feb 2019 21:35

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 216 – Fd. Medlem
Postad: 11 feb 2019 21:55

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

emilg 478
Postad: 11 feb 2019 21:57

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 28435
Postad: 11 feb 2019 21:58
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 216 – Fd. Medlem
Postad: 11 feb 2019 21:58

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 216 – Fd. Medlem
Postad: 11 feb 2019 22:06 Redigerad: 11 feb 2019 22:08
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 28435
Postad: 11 feb 2019 22:07

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 216 – Fd. Medlem
Postad: 11 feb 2019 22:09 Redigerad: 11 feb 2019 22:10

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 28435
Postad: 11 feb 2019 22:12
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 28435
Postad: 11 feb 2019 22:17
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 216 – Fd. Medlem
Postad: 11 feb 2019 22:27
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 216 – Fd. Medlem
Postad: 11 feb 2019 22:32
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 28435
Postad: 11 feb 2019 22:49
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 216 – Fd. Medlem
Postad: 13 feb 2019 01:02
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 28435
Postad: 13 feb 2019 06:53
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 216 – Fd. Medlem
Postad: 13 feb 2019 08:42
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 28435
Postad: 13 feb 2019 09:49
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 216 – Fd. Medlem
Postad: 17 feb 2019 21:51

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 28435
Postad: 18 feb 2019 09:47

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. 

lagordning 2 – Avstängd
Postad: 10 mar 2019 14:28

Ah, Java - Minnena som kommer från när jag först började med det. Mycket intressant läsning här.

Svara Avbryt
Close