DontTouchMyPhone Skrevet 16. februar 2010 Del Skrevet 16. februar 2010 Hei! Jeg sitter litt fast i en skoleoppgave, og håper noen kan forklare meg hva jeg gjør feil. Her er koden jeg har skrevet: /** * Skuddaar.java * * Program for å finne ut om et år er skuddår. * * Et år er skuddår dersom det kan deles med 4 og få heltall som svar. * Unntak er hundreår, de må deles med 400 og få heltall som svar for å være skuddår. */ import static javax.swing.JOptionPane.*; class Skuddaar { public static void main (String[]args) { String aarstallLest = showInputDialog ("Skriv inn årstall her: "); int aarstall = Integer.parseInt(aarstallLest); String utskrift = ""; int a = aarstallLest%400; int b = aarstallLest%4; if (a==0 || b==0) { showMessageDialog (null, "Dette er et skuddår."); }else { showMessageDialog (null, "Dette er ikke et skuddår."); } } } Når jeg prøver dette får jeg følgende feilmelding: Skuddaar.java:17: operator % cannot be applied to java.lang.String,int int a = aarstallLest%400; ^ Skuddaar.java:18: operator % cannot be applied to java.lang.String,int int b = aarstallLest%4; Noen som kan hjelpe meg til å få dette til å fungere? Jeg er helt nybegynner med java, og jeg tror jeg blander sammen endel metoder. Sukk.... Omicron Lenke til kommentar
x871kx6167ss7 Skrevet 16. februar 2010 Del Skrevet 16. februar 2010 Skuddaar.java:17: operator % cannot be applied to java.lang.String,int I filen Skuddaar.java. På linje 17. Operasjonen % kan ikke brukes på parametere som henholdsvis er av typen String og typen int. java.lang.String er det «fulle» navnet til String. Linje 17: int a = aarstallLest%400; Parameterene til % er variablen aarstallLest og konstanten 400. Konstanten 400 er en int. Variablen aarstallLest er en String. (Definert som det noen linjer ovenfor.) Det er rimlig å anta at operatoren % forventer to tall, altså to ints. Mulig det nå ble åpenbart hva feilen er, hvis ikke er det bare å spørre. - Peter Lenke til kommentar
norpheus Skrevet 16. februar 2010 Del Skrevet 16. februar 2010 Du prøver her å kjøre en modulo på en String (aarstallLest), noe som ikke vil fungere. Siden aarstallLest er en innlest variabel, må du sjekke om denne faktisk er en int (noe den må være for å være et årstall). Dette kan enkelt gjøres slik: int year=0; try{ year=Integer.parseInt(aarstallLest); }catch(NumberFormatException e){GI en melding til brukeren om at dette ikke er et årstall!} Lenke til kommentar
DontTouchMyPhone Skrevet 16. februar 2010 Forfatter Del Skrevet 16. februar 2010 Takker for svar. Jeg skjønner nå at jeg må bruke int istedet for string på variabelen aarstallLest for å kunne benytte %. Men jeg kan ikke bare bytte ut string med int da får jeg opp feilmelding igjen. norpheus - hvor i koden skal dette være ? Jeg er helt grønn som sagt, og her kommer du innpå metoder og uttrykk som er helt ukjente for meg.... Lenke til kommentar
x871kx6167ss7 Skrevet 16. februar 2010 Del Skrevet 16. februar 2010 Du leser årstallet inn som en streng. Også ønsker du å konvertere det til en int. Du gjør faktisk dette i koden din. På linjen under der du leser inn svaret, så konverterer du stringen til et tall, og putter det inn i variablen «aarstall». Så du må bare bruke variablen «aarstall» i stede for variablen «arrstallLest». Lenke til kommentar
DontTouchMyPhone Skrevet 16. februar 2010 Forfatter Del Skrevet 16. februar 2010 Takk for svar. Nå virker koden, etter at jeg byttet ut slik du foreslo. Så da er det bare å håpe at programmet faktisk gjør det jeg vil det skal gjøre....skal teste litt å se om alt stemmer. Tusen takk for all hjelp! Jeg dukker garantert opp her seinere er jeg redd... Lenke til kommentar
Kaptein Snus Skrevet 17. februar 2010 Del Skrevet 17. februar 2010 Du hadde jo gjort alt riktig, bare brukt feil variabel. Så fort kan det gjøres, men man lærer jo av det! Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå