2013-09-27, 14:07
  #1
Medlem
GaTuSoPPaReNs avatar
Hej,

Följande kod ger felmeddelandet "Cannot find symbol" på raden "return ökadInt;".

Metoden skall ta in en sekund och öka den med tre, och sedan skicka tillbaka en integer som är ökad med tre, sett från det ursprungliga värdet.

Problemet är att datorn inte hittar integern som är adderad med tre.

Hur får jag ut integern ökadInt ifrån följande metod?

Testat:
Returnera efter tidtagare.cancel(), går ej. (Kan ej returnera från void)
Lägga int ökadInt = insändint före schedule av timer, går ej. (Då krävs att ökadInt deklarerar final, det går ju ej, så klart).


Kod:
package test;

import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;


public class timerMetoder {
    
    public static int adderaIntegerTimer(final int insändint) {
        
        final Timer tidtagare = new Timer();
        tidtagare.scheduleAtFixedRate(new TimerTask() {
            
            int ökadInt = insändint;
            
            public void run() {
                ökadInt++;
                if (ökadInt - insändint == 3) {
                    tidtagare.cancel();
                }

                }

            }, new Date(), 1000);
        
        
        return ökadInt;
        
    }
    
    
}

Tack,
Sopparn
__________________
Senast redigerad av GaTuSoPPaReN 2013-09-27 kl. 14:09.
Citera
2013-09-27, 14:10
  #2
Medlem
usb3s avatar
Använd inte åäö i variabelnamn och absolut inte som första tecken i ett variabelnamn.
Citera
2013-09-27, 14:13
  #3
Medlem
GaTuSoPPaReNs avatar
Citat:
Ursprungligen postat av usb3
Använd inte åäö i variabelnamn och absolut inte som första tecken i ett variabelnamn.

Varför? Förutom ev. kompabilitetsproblem.
Citera
2013-09-27, 14:16
  #4
Medlem
usb3s avatar
Citat:
Ursprungligen postat av GaTuSoPPaReN
Varför? Förutom ev. kompabilitetsproblem.

Programmeringshyfs, nåväl. Testa att deklarera variabeln ökadInt ovanför raden
"final Timer tidtagare = new Timer();".
Citera
2013-09-27, 18:48
  #5
Medlem
christerys avatar
Citat:
Ursprungligen postat av GaTuSoPPaReN
Varför? Förutom ev. kompabilitetsproblem.

Du svarade ju själv på frågan, det fungerar dåligt med åäö i programspråk.
Citera
2013-09-28, 10:39
  #6
Medlem
dethalvabarnets avatar
Du kan göra "ökadInt" till global variabel i din klass.
Det blir svårt att accessa den annars från din anonyma klass om du inte kan skicka med en pekare till den i en konstruktor eller dylikt tror jag.
Citera
2013-09-28, 10:41
  #7
Medlem
dethalvabarnets avatar
Citat:
Ursprungligen postat av GaTuSoPPaReN
Kod:
package test;

import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;


public class timerMetoder {
    static int ökadInt=0;
    
    public static int adderaIntegerTimer(final int insändint) {
        
        final Timer tidtagare = new Timer();
        tidtagare.scheduleAtFixedRate(new TimerTask() {
            
            ökadInt = insändint;
            
            public void run() {
                ökadInt++;
                if (ökadInt - insändint == 3) {
                    tidtagare.cancel();
                }

                }

            }, new Date(), 1000);
        
        
        return ökadInt;
        
    }
    
    
}

^Menar så här
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in