[JAVA] uitkomst van functie in een txt bestand zetten

Pagina: 1
Acties:

  • Kingiez
  • Registratie: Maart 2001
  • Laatst online: 20-05 08:26
Voor school moeten ik een java opdrachtje maken. Nu moet ik een 2-d tabel maken. Opzich niet zo moeilijk, maar nu moet dit ook in een txt bestandje komen te staan. Dat is het punt waar ik er niet uitkom.

Ik heb het maken van de tabel in een aparte functie staan, leek me makkelijker, maar misschien moet ik alles wel helemaal omgooien...

plz. help :)

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
import java.util.*;                     // bevat alle list en map classes
import java.io.*;                       // bevat alle Input / output classes

public class test
{
    static void tabel(int max){
        System.out.println();
        
        // We gaan hier een 2d tabel maken met de tafels van 1 t/m 10
        
        String line = "---";                // Een klein stukje voor elk tussenlijntje
        String fline = "===";               // Een klein stukje voor het 1e bovenlijntje
        
        int[] x = new int[max];             // Een array maken met de getallen van 1 t/m (int)max
        for (int i = 0, j = 1; i < max; i++){
            x[i] = j;
            j++;
        }                       // Einde maken van array x
    
        //int[] y = x;                  // Een vierkante tabel dus het is gelijk aan x
                                // Eigenlijk nutteloos, aangezien ik ook 2 keer x kan gebruiken
                                
        for(int l = 0; l < x.length; l++){      // De 1e for-loop zorgt voor de verticale telling
            if (l == 0 || l ==1){           // Beetje opmaak erbij. Dit is voor de 1e rij. t.b.v. de overzichtelijkheid
                for (int k = 0; k < x.length; k++){
                    System.out.print (fline + fline);
                }               
                System.out.println(fline);
            } else {                // Opmaak voor elke andere rij
                for (int k = 0; k < x.length; k++){
                    System.out.print (line + line);
                }
                System.out.println(line);
            }
            System.out.print("|| ");        // Elke eerste rij begint met een ||
            
            for(int j = 0; j < x.length; j++){  // De 2e for loop voor de horizontale sommen
                
                if ((x[j] * x[l]) <= 9){    // Zodat het rijtje netjes onder elkaar komt
                    System.out.print(" ");
                }
                
                if ((x[j] * x[l]) <= 99){   // Voor het geval we met getallen boven de 100 te maken krijgen
                    System.out.print(" ");
                }
                
                
                System.out.print(x[j]*x[l]);    // De uitkomst van de horizontale rij
                
                
                if (j == 0 ) {          
                    System.out.print(" || ");
                } else {
                    System.out.print(" | ");
                }
            }
            System.out.println();
        }
        System.out.print("---");
        for (int k = 0; k < x.length; k++){
            System.out.print (line + line);
        }
        System.out.println();
    }
    
    public static String readString() {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in), 1);
        String String = " ";
        try { 
            String = br.readLine();
        } catch (IOException ex) { 
            System.out.println(ex);
        }
        return String;
    }
    
    public static int readInt() { 
        return Integer.parseInt(readString());
    }
        
    public static void main(String [] args){
        
        // Het echte uitvoer gedeelte. Dit houden we zo klein mogelijk..
        
        System.out.println("Geef een getal voor de tabelgrootte, gevolgd door een ENTER:");
        System.out.println("(12 is voor je dos venster de max;)");
        int maxx = test.readInt();
        test.tabel(maxx);               // Maak de tabel met de ingelezen waarde
        if (maxx >= 13) {
            System.out.println();
            System.out.println("Ik zei toch dat ie nie breder kon !!:P");
        }
    }
}


Natuurlijk zitten er dingen in die beter kunnen, maar ik ben nog maar net bezig met java, en ik vind dat ik al vrij ver gekomen ben.

Its me...


  • -FoX-
  • Registratie: Januari 2002
  • Niet online

-FoX-

Carpe Diem!

Eventueel met een StringBuffer werken, en deze dan wegschrijven naar een file?

  • Kingiez
  • Registratie: Maart 2001
  • Laatst online: 20-05 08:26
kan je misschien een voorbeeld geven?

Its me...


  • -FoX-
  • Registratie: Januari 2002
  • Niet online

-FoX-

Carpe Diem!

declaraties:
code:
1
2
3
4
private StringBuffer buffer;
private String outputString = "data.txt";
private FileWriter filewriter;
private BufferedWriter bufwriter;


in uw functie
code:
1
buffer.append("<uw tekst> \n en uitkomsten");


als laatste actie:
code:
1
2
3
4
filewriter = new FileWriter(outputString);
bufwriter = new BufferedWriter(filewriter);
bufwriter.write(buffer.toString());
bufwriter.close();

Verwijderd

Hoe moet die tabel er uit zien? Kun je dat toelichten?

Wat dacht je van een object "Tafel" met de volgende eigenschappen:
- als parameter geef je een getal mee en daarvan wordt (in de constructor) in een intern array de tafel geconstrueerd.
- een methode drukAf()/print() die de tafel op goede wijze uitprint met de filename als parameter.

Dan wordt het heel makkelijk:

code:
1
2
3
4
5
for (int i = 1; i <= 10; i++)
{
    Tafel tafel = new Tafel(i);
    tafel.drukAf(FILENAAM);
}


De rest (tafel klasse) laat ik graag aan jezelf over. Waarom laat je alles trouwens niet gewoon op het scherm komen? Je kunt dan door:

Java mijnProgramma > uitvoer.txt

de uitvoer gewoon in een file krijgen. Maakt het een stuk makkelijker.

Als je geen objecten gebruikt doe het dan gewoon in C. Just my 2 cents.

[ Voor 23% gewijzigd door Verwijderd op 13-03-2004 16:53 ]


  • Kingiez
  • Registratie: Maart 2001
  • Laatst online: 20-05 08:26
Verwijderd schreef op 13 maart 2004 @ 16:50:
Hoe moet die tabel er uit zien? Kun je dat toelichten?

Wat dacht je van een object "Tafel" met de volgende eigenschappen:
- als parameter geef je een getal mee en daarvan wordt (in de constructor) in een intern array de tafel geconstrueerd.
- een methode drukAf()/print() die de tafel op goede wijze uitprint met de filename als parameter.

Dan wordt het heel makkelijk:

code:
1
2
3
4
5
for (int i = 1; i <= 10; i++)
{
    Tafel tafel = new Tafel(i);
    tafel.drukAf(FILENAAM);
}


De rest (tafel klasse) laat ik graag aan jezelf over. Waarom laat je alles trouwens niet gewoon op het scherm komen? Je kunt dan door:

Java mijnProgramma > uitvoer.txt

de uitvoer gewoon in een file krijgen. Maakt het een stuk makkelijker.

Als je geen objecten gebruikt doe het dan gewoon in C. Just my 2 cents.
Hmz, ja jouw idee is misschien wel een oplossing, maar is er geen manier op hoe het programma dit zelf kan doen?

En, zoals je misschien wel had kunnen lezen: het is een schoolopdracht, en het MOET in java... helaas

Its me...


Verwijderd

King5th schreef op 13 maart 2004 @ 17:04:
[...]


Hmz, ja jouw idee is misschien wel een oplossing, maar is er geen manier op hoe het programma dit zelf kan doen?
Wat denk je? Tuurlijk. Je maakt gewoon alleen een tafel klasse met daarin een main die instanties van die klasse maakt. Dan heb je alles in 1 file. Je kunt trouwens net zoveel klasses in 1 file zetten als je wilt (dacht ik tenminste) maar dat is niet wat je bedoelt waarschijnlijk ;)

[ Voor 18% gewijzigd door Verwijderd op 13-03-2004 17:09 ]


  • Macros
  • Registratie: Februari 2000
  • Laatst online: 30-04 09:28

Macros

I'm watching...

Je print nu alles naar System.out. Zoals je kan zien is System.out een instancie van een PrintStream. Wat je dus moet doen, is bovenaan je programma in je klasse een nieuwe PrintStream instantie maken. Bijvoorbeeld 'output':
Java:
1
static PrintStream output = null;

Dan verander al je System.out.println() statements in output.println() statements.
Aan het begin van je main methode bepaald wat voor PrintStream je output is, dan kan je dynamisch bepalen waar de output heen gaat.
Voor gewoon naar het scherm doe je:
output = System.out;
Voor naar een file kan je zoiets doen:
output = new FileOutputStream("output.txt");

Zo doe ik het meestal, lekker makkelijk.

[ Voor 7% gewijzigd door Macros op 13-03-2004 19:47 ]

"Beauty is the ultimate defence against complexity." David Gelernter


  • Kingiez
  • Registratie: Maart 2001
  • Laatst online: 20-05 08:26
Oke dan! :)

tnx all :)

Its me...

Pagina: 1