Avatar billede kohaar Nybegynder
17. november 2003 - 15:11 Der er 20 kommentarer og
1 løsning

Cannot resolve symbol

public static int[] getArray()
    {
        String record = null;
        try {
          FileReader fr = new FileReader("myfile.txt");
          BufferedReader br = new BufferedReader(fr);
          record = new String();
          while ((record = br.readLine()) != null) {
            int[] ia = new int[record.length()];
            for(int i = 0; i < ia.length; i++) {
            ia[i] = Integer.parseInt(record.substring(i,i+6));
            i = i + 5;
            }
          }
        } catch (IOException e) {
            e.printStackTrace();
        }
      return ia;
    }

I følgende kode får jeg fejlen: cannot resolve symbol - variable ia? Hvad er der galt?
Avatar billede erikjacobsen Ekspert
17. november 2003 - 15:13 #1
ia er erklæret inde i whileløkken, og kendes derfor ikke udenfor.

Når du skal igennem flere linier, hvad skal ia så indeholde når den er færdig?
Avatar billede kohaar Nybegynder
17. november 2003 - 15:17 #2
Jeg har en række tal i en fil. De skal over i et array i grupper af 6. Jeg skal derefter retunere dette array. Kan ikke lige se hvordan jeg kan gøre det uden en while løkke. Er self heller ikke en java ekspert (lang fra) :-)
Avatar billede erikjacobsen Ekspert
17. november 2003 - 15:18 #3
Joh, men du skal erklære ia udenfor. Men du ved jo ikke hvor mange tal du så
har, så det er lidt svært at bestemme størrelsen af ia før du går i gang.
Må jeg anbefale at du bruger Vector eller ArrayList i stedet for?
Avatar billede erikjacobsen Ekspert
17. november 2003 - 15:20 #4
Du har da også noget rod i størrelsen af ia allerede. Du giver den størrelse
som antal tegn på linien, men det er kun en 6.del af den længde du skal have.
(hvis jeg læser korrekt)
Avatar billede kohaar Nybegynder
17. november 2003 - 15:27 #5
Fik jeg sagt at jeg ikke ved så meget om java :-)

Har du muligvis et eksempel :-)
Avatar billede kohaar Nybegynder
17. november 2003 - 15:40 #6
Jeg kan jo lave så record.length bliver divideret med 6. Så får jeg jo den rette størrelse på den. Skulle ikke være så stort et problem, men kan stadig ikke regne ud hvordan jeg får arrayet udenfor while løkken...
Avatar billede kohaar Nybegynder
17. november 2003 - 15:41 #7
F.eks. int[] ia = new int[record.length()/6];
Får ingen fejl ved den, så det er vel lovligt?
Avatar billede kohaar Nybegynder
18. november 2003 - 00:18 #8
ingen?
Avatar billede hamlet Nybegynder
20. november 2003 - 09:36 #9
Erklær ia udenfor while løkken: int[] ia. Så sætter du ia = new int[record.length()]; inde i while løkken.
Avatar billede kohaar Nybegynder
20. november 2003 - 11:38 #10
Ahh. Selfølgelig...

Hvis du skriver et svar får du point...
Avatar billede erikjacobsen Ekspert
20. november 2003 - 11:40 #11
Det foreslog jeg 17/11-2003 15:18:50 - men det løse ikke dit problem med
længden af dit array, som du ikke kan regne ud før du har være filen igennem.
Derfor: Vector eller ArrayList
Avatar billede hamlet Nybegynder
20. november 2003 - 12:02 #12
Ja, det er sandt nok. Jeg er ikke ude efter point, jeg ville bare lige forklare det der med erklæringen lidt nærmere. :)
Avatar billede erikjacobsen Ekspert
20. november 2003 - 12:04 #13
Det er jeg heller ikke ;) Men vi er da i det mindste enige om problemerne
Avatar billede kohaar Nybegynder
23. november 2003 - 19:44 #14
Sorry jeg ikke lige fik tjekket her igen. Har haft noget travlt. Vil i ikke have point?
Avatar billede erikjacobsen Ekspert
23. november 2003 - 19:47 #15
Jeg vil gerne vide om du har løst dit problem.
Avatar billede kohaar Nybegynder
23. november 2003 - 19:58 #16
Yep, men har lavet meget om siden, med hjælp fra flere her på eksperten. Resultatet er her:

      String record = null;
        try {

          FileReader fr = new FileReader("primitives_0_5_0.DAT");
          BufferedReader br = new BufferedReader(fr);

          record = new String();
          while ((record = br.readLine()) != null) {
          StringTokenizer st = new StringTokenizer(record, " ");
          ArrayList lst = new ArrayList();
          while(st.hasMoreTokens())
          {
            lst.add(st.nextToken());
          }
          StringBuffer[] sa = new StringBuffer[lst.size()];
            String[] finalarray = new String[lst.size()];
            for (int i = 0; i<lst.size(); i++) {
                sa[i] = new StringBuffer(lst.get(i).toString());
            }
            sa[19] = sa[0].delete(sa[0].indexOf("."), sa[0].length());
            sa[20] = sa[1].delete(sa[1].indexOf("."), sa[1].length());
            for (int t = 0; t < lst.size(); t++) {
              finalarray[t] = sa[t].toString();
            }
          vindue.update( finalarray );
         
          }
        } catch (IOException e) {
       
          e.printStackTrace();
        }
    }
Avatar billede kohaar Nybegynder
23. november 2003 - 20:03 #17
Har nye problemer med noget grafik, men tror det er for omfattende at spørge om her, men hvis i virkelig keder jer, kan i kigge på http://kohaar.thoestesen.dk/NorbertGraph.zip - læs read this filen. Er noget kompliceret, så det skal kun være hvis i keder jer :-)
Avatar billede erikjacobsen Ekspert
23. november 2003 - 21:54 #18
Jeg kan ikke gennemskue om det er mig der har hjulpet dig så - skidt med
det,  jeg frafalder point.
Avatar billede kohaar Nybegynder
24. november 2003 - 00:05 #19
Er måske ikke så nemt der, men du hjalp mig til at komme videre, så det er helt op til dig. Det er jo kun 30 point vi snakker om...
Avatar billede kohaar Nybegynder
24. november 2003 - 00:05 #20
Kan mindes at du har hjulpet mig utallige gange før, så det er vel kun fair :-)
Avatar billede kohaar Nybegynder
01. oktober 2004 - 02:01 #21
sådan
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester