Gå til innhold

Trenger litt hjelp med bruk av modulusoperator


Anbefalte innlegg

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
Videoannonse
Annonse

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

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

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

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...