Avatar billede ff_j Nybegynder
23. november 2010 - 15:04 Der er 16 kommentarer og
1 løsning

Basal Programmering

Hey Eksperter.

Jeg sidder med en lille opgave jeg forsøger at løse, men er desværre for mig selv gået i stå.

Jeg har følgende kode:

package opg15_8_3;

import java.io.*;
import java.util.*;

public class SkrivOgGem {

    public static void main(String[] args) throws IOException {
        FileWriter fil = new FileWriter("C:/Users/fasolie/desktop/skyld.txt");
        PrintWriter pw = new PrintWriter(fil);

        String a, b, c;
        a = "Anne 300 150";
        b = "Peter 18 300 900 -950";
        c = "Lis 1000 13.5";

        pw.println(a);
        pw.println(b);
        pw.println(c);
        pw.close();

        System.out.println("Filen er gemt.");
    }
}

class Læs {

    public static void main(String[] args) throws IOException {
        FileReader fil = new FileReader("C:/Users/fasolie/desktop/skyld.txt");
        BufferedReader ind = new BufferedReader(fil);

        String linje = ind.readLine();
        while (linje != null) {
          //  System.out.println(linje);
            StringTokenizer st = new StringTokenizer(linje);
            while (st.hasMoreTokens()) {
            System.out.println(st.nextToken());
        }

            linje = ind.readLine();
        }

    }
}

Det programmet skal kunne er som følger:
1. skrive og gemme en fil
2. i filen skal der være 3 personer med forskellige saldoer for eksempel Anne 300 150
3. læser fra den skrevne fil
4. udskriver summen af talene i hver linje, sådan at der kommer til at stå Anne: 450.
jeg er nået til punkt 3 og måske startet på punkt 4, med min StringTokenizer().

Mange tak på forhånd.
Avatar billede arne_v Ekspert
23. november 2010 - 15:11 #1
Idag ville jeg ikke bruge StringTokenizer men:

String[] words = line.split(" ");

Du kan konvertere fra String til int med Integer.parseInt og at addere burde ikke vaere et problem.
Avatar billede ff_j Nybegynder
23. november 2010 - 15:38 #2
Jeg har nu følgende kode:

package opg15_8_3;

import java.io.*;
import java.util.*;

public class SkrivOgGem {

    public static void main(String[] args) throws IOException {
        FileWriter fil = new FileWriter("C:/Users/fasolie/desktop/skyld.txt");
        PrintWriter pw = new PrintWriter(fil);

        String a, b, c;
        a = "Anne 300 150";
        b = "Peter 18 300 900 -950";
        c = "Lis 1000 13.5";

        pw.println(a);
        pw.println(b);
        pw.println(c);
        pw.close();

        System.out.println("Filen er gemt.");
    }
}

class Læs {

    public static void main(String[] args) throws IOException {
        FileReader fil = new FileReader("C:/Users/fasolie/desktop/skyld.txt");
        BufferedReader ind = new BufferedReader(fil);

        String linje = ind.readLine();
        while (linje != null) {
            // System.out.println(linje);
            String[] words = linje.split(" ");
            for (String word : words) {
                System.out.println(word);
                double res = Double.parseDouble(word);
                System.out.println(res);
            }
            linje = ind.readLine();

        }

    }
}

Men hvordan kalder jeg de første tal hørende til den pågældende person. Jeg får et output der bare har adskilt filen i ord per linje. Men jeg skal jo ikke konverter Anne til en double.
Mange tak.
Avatar billede arne_v Ekspert
23. november 2010 - 15:43 #3
Jeg ville nok erstatte:

for (String word : words) {

med:

for (int i = 1; i < words.length; i++) {
Avatar billede ff_j Nybegynder
23. november 2010 - 15:50 #4
Nu får jeg et output:
1
2
1
2
3
4
1
2
Jeg går ud fra at tallene derop betyder de enkelte værdier Anne, Peter og Lis skylder.
Hvordan kalder jeg så de værdier de indeholder så jeg kan lægge dem sammen.
Mange tak.
Avatar billede arne_v Ekspert
23. november 2010 - 15:59 #5
Du skal bruge words[i] inden i loekken.
Avatar billede ff_j Nybegynder
23. november 2010 - 16:11 #6
Hvordan?
Avatar billede ff_j Nybegynder
23. november 2010 - 16:16 #7
Har du eventuelt et eksempel jeg kan kigge på.
Avatar billede arne_v Ekspert
23. november 2010 - 16:51 #8
Du skal have en sum variabel du akkumulerer vaerdierne i og saa kan du adde Double.parseDouble(words[i])
Avatar billede ff_j Nybegynder
24. november 2010 - 15:08 #9
Hey igen.
Jeg prøver at løse det med den hjælp jeg har fået af dig, men kan stadig ikke overskue det. Jeg har indtil videre følgende kode:


package opg15_8_3;

import java.io.*;
import java.util.*;

public class SkrivOgGem {

    public static void main(String[] args) throws IOException {
        FileWriter fil = new FileWriter("C:/Users/fasolie/desktop/skyld.txt");
        PrintWriter pw = new PrintWriter(fil);

        String a, b, c;
        a = "Anne 300 150";
        b = "Peter 18 300 900 -950";
        c = "Lis 1000 13.5";

        pw.println(a);
        pw.println(b);
        pw.println(c);
        pw.close();

        System.out.println("Filen er gemt.");
    }
}

class Læs {

    public static void main(String[] args) throws IOException {
        FileReader fil = new FileReader("C:/Users/fasolie/desktop/skyld.txt");
        BufferedReader ind = new BufferedReader(fil);
        double sum =0;
        double res = 0;

        String linje = ind.readLine();
        while (linje != null) {
            // System.out.println(linje);
            String[] words = linje.split(" ");
            for (int i = 1; i < words.length; i++) {
                sum = sum + i;
                res = Double.parseDouble(words[i]);
                System.out.println(i);
                System.out.println(res);
            }
            linje = ind.readLine();

        }

    }
}


Og er igen gået i stå. Håber du kan hjælpe.
På forhånd tak.
Avatar billede arne_v Ekspert
24. november 2010 - 15:13 #10
skal

                sum = sum + i;
                res = Double.parseDouble(words[i]);

ikke vaere

sum = sum + Double.parseDouble(words[i]);

?
Avatar billede ff_j Nybegynder
24. november 2010 - 15:19 #11
Jamen det giver det samlede resultat, altså alles gæld i en.
Det jeg er interesseret i er at den skal udskrive:
Anne: 450
Peter: 1158
Lis: 1013.5
Avatar billede ff_j Nybegynder
24. november 2010 - 15:20 #12
Hvordan gør jeg så at den stopper og laver en ny beregning for den næste i køen.
Avatar billede arne_v Ekspert
24. november 2010 - 15:31 #13
Saa skal du vel nulstille sum for hver person.
Avatar billede ff_j Nybegynder
24. november 2010 - 20:11 #14
Kan jeg inde i for løkken hente navne fra filen og udskrive dem, ved hvert beløb som de skylder. Hvis ja Hvordan?
Jeg er nået så langt at mit program udskriver de rigtige beløber lagt sammen, men mangler nu at sætte de rigtige navne til de rigtige beløb.
Avatar billede arne_v Ekspert
24. november 2010 - 20:18 #15
words[0] skulle indeholde navnet
Avatar billede ff_j Nybegynder
24. november 2010 - 20:22 #16
Det virker nu.
Rigtige MANGE gange tak for hjælpen.

Smid et svar.
Avatar billede arne_v Ekspert
24. november 2010 - 20:29 #17
svar
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