Vinnaren i pepparkakshustävlingen!
2016-09-29, 21:30
  #1
Medlem
operation cannot be resolved to a variable.


Felmeddelandet baseras raden som är riktat mot en pil.

Kod.
__________________
Senast redigerad av aves8888 2016-09-29 kl. 21:34.
Citera
2016-09-29, 21:36
  #2
Medlem
Bättre formattering och indentering, men inte helt korrekt. Om du kör Sublime som editor så finns det en ypperlig funktion för att indentera din kod.

När du kompilerar med javac så får du ett fint felmeddelande typiskt:
Kod:
C:\Program Files\java\jdk1.8.0_77\bin>javac c:\tmp\Calculator.java
c:\tmp\Calculator.java:31: error: cannot find symbol
                System.out.println(operation);
                                   ^
  symbol:   variable operation
  location: class Calculator
1 error
Då ser du klart och tydligt att i filen Calculator.java så finns det ett fel på rad 31 (kan vara annat radnummer i din fil beroende på radbrytningar och formatering). Felet är "cannot find symbol". Sen pekas kodraden ut: System.out.println(operation);

Du har hittat felet, men jag undrar varför din kompilator inte beskriver tydligare än det du har skrivit här i tråden.

Du deklarerar operation inuti din while-loop. Utanför while-loopen är operation okänd. Det är därför du får fel.
__________________
Senast redigerad av e7andy 2016-09-29 kl. 21:39.
Citera
2016-09-29, 21:41
  #3
Medlem
kodsnickrarns avatar
Du deklarerar String operation inne i while()-satsen, men försöker sen använda den utanför och där är den inte tillgänglig. Räkna {}-klamrarna, du kanske råkat få dit en extra } ?

Edit: bolltvåa på den :-)

/K
Citera
2016-09-29, 21:44
  #4
Moderator
Protons avatar
Citat:
Ursprungligen postat av aves8888
operation cannot be resolved to a variable.


Felmeddelandet baseras raden som är riktat mot en pil.

Kod.
Dina if-satser är felaktiga dessutom, de kommer inte göra det du tror att de gör.

Primitiver kan du jämföra med ==operatorn, men eftersom String inte är en primitiv datatyp krävs det ett annat handgrepp för denna.

Exakt vilken lämnas som en övning....
Citera
2016-09-29, 21:48
  #5
Medlem
Citat:
Ursprungligen postat av Proton
Dina if-satser är felaktiga dessutom, de kommer inte göra det du tror att de gör.

Primitiver kan du jämföra med ==operatorn, men eftersom String inte är en primitiv datatyp krävs det ett annat handgrepp för denna.

Exakt vilken lämnas som en övning....


Jag märkte det. Värdet av variabeln sum ändras inte.


Hur ska jag gå tillväga?
Citera
2016-09-29, 21:54
  #6
Medlem
Citat:
Ursprungligen postat av Proton
Dina if-satser är felaktiga dessutom, de kommer inte göra det du tror att de gör.

Primitiver kan du jämföra med ==operatorn, men eftersom String inte är en primitiv datatyp krävs det ett annat handgrepp för denna.

Exakt vilken lämnas som en övning....


char är en primitiv datatyp, hur skulle jag isåfall använda den i detta fallet?
Citera
2016-09-29, 22:27
  #7
Medlem
Citat:
Ursprungligen postat av aves8888
char är en primitiv datatyp, hur skulle jag isåfall använda den i detta fallet?
I din kod finns inga chars. Eftersom det är dubbla citationstecken så är de strängar.
Kolla i dokumentationen för String för att hitta passande metoder: https://docs.oracle.com/javase/8/doc...ng/String.html

Om du vill använda chars så gör om operation till en char och använd sen en switch-sats. Det blir snyggare tycker jag. Fast då blir det inte så snyggt när du läser in operationer eftersom det inte finns någon metod för att läsa in en char.
__________________
Senast redigerad av e7andy 2016-09-29 kl. 22:32.
Citera
2016-09-30, 07:14
  #8
Moderator
Protons avatar
Citat:
Ursprungligen postat av aves8888
Jag märkte det. Värdet av variabeln sum ändras inte.


Hur ska jag gå tillväga?
Kolla igenom den stora tråden för nybörjarfrågor, där lär du rätt snabbt hitta svaret, eller iaf hur andra gjort.

Dessutom bör du öppna din bok och läsa på hur java funkar, det här är en av de mer grundläggande grejjerna och det måste du kunna för att ta dig vidare sedan.
Citera
2016-10-01, 03:00
  #9
Medlem
Citat:
Ursprungligen postat av Proton
Kolla igenom den stora tråden för nybörjarfrågor, där lär du rätt snabbt hitta svaret, eller iaf hur andra gjort.

Dessutom bör du öppna din bok och läsa på hur java funkar, det här är en av de mer grundläggande grejjerna och det måste du kunna för att ta dig vidare sedan.


Så hur kan detta funka när jag har definerat operation som en String?


Citera
2016-10-01, 03:42
  #10
Moderator
Neksnors avatar
Citat:
Ursprungligen postat av aves8888
Så hur kan detta funka när jag har definerat operation som en String?


Inte helt nykter, men definiera operation på högre nivå och låt det vara en char. Du får även ändra raden
Kod:
String operation = test2.nextLine(); 
eftersom nextLine() returnerar String. Du bör kunna använda Strings metod toCharArray() och sedan plocka ut lämpligt tecken ur svaret (index 0, skulle jag tro). Men det känns inte som en snygg lösning.

Full som sagt.

Om du inte har gjort det innan, lär dig att läsa och förstå javadoc.
https://docs.oracle.com/javase/7/doc...l/Scanner.html
https://docs.oracle.com/javase/7/doc...ng/String.html
Citera
2016-10-01, 08:47
  #11
Moderator
Protons avatar
Citat:
Ursprungligen postat av aves8888
Så hur kan detta funka när jag har definerat operation som en String?


Det där såg ju ut att ha chans att kunna funka bättre ja.

Objektreferenser jämför du med ==operatorn, ska du jämföra objektens värden måste man alltså använda equals-metoden.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback