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.
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?
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.
Intressant. Men vilken är initieringsvariabeln i detta fall då? Är den intIndata1?
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...
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?
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
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?
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.
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.
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?
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.
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)"
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.
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.
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?
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?
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"?
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.
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
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.
Ah, Java - Minnena som kommer från när jag först började med det. Mycket intressant läsning här.