integers uit .txt file inlezen met java

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben bezig met een opdracht, en daarvoor is het nodig om in Java integers uit een file test.txt te halen.
Iedere regel uit dit bestand bestaat altijd uit 5 getallen, van deze getallen is het 1e gewoon een numer.
de andere zijn coordinaten.
Na enkele uren te hebben gegoogled en in Netbeans geprutst te hebben, lukt het me niet om het voor elkaar te krijgen.

ik wil het test.txt bestand kunnen uitlezen en vervolgend de coordinaten kunnen gebruiken in het programma.

Iemand enig idee hoe ik dit aan moet pakken?

inhoud van test.txt:

1 1 2 3 3
2 0 0 3 4
3 2 2 0 0
4 3 4 4 4
5 2 3 1 2
6 3 4 0 0
7 0 1 0 2
8 4 4 1 3
9 3 3 3 3
10 1 2 4 4

Acties:
  • 0 Henk 'm!

  • Invisible_man
  • Registratie: Juni 2006
  • Laatst online: 20-09 19:50
Regel voor regel in lezen, per regel splitten op de spatie en de strings die daar uitkomen parsen naar int.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op dinsdag 26 mei 2009 @ 22:34:
Na enkele uren te hebben gegoogled en in Netbeans geprutst te hebben, lukt het me niet om het voor elkaar te krijgen.
Daar zien we dan graag de probeersels/resultaten van (zoals je kunt lezen in onze Quickstart verwachten we namelijk wel wat eigen initiatief). Als we dan concrete code zien kunnen we je vast helpen met een duwtje in de juiste richting. We gaan je echter niet helpen door hier de kant-en-klare oplossing neer te zetten ;)

[ Voor 7% gewijzigd door RobIII op 26-05-2009 22:37 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
public static List<Integer> getIntegersFromFile(
String fileName) throws IOException {
StringWriter writer = new StringWriter();
BufferedReader reader = new BufferedReader(
new FileReader(fileName));
for (String line = reader.readLine(); line != null; line = reader
.readLine()) {
writer.write(line + " ");
}
StringTokenizer tokens = new StringTokenizer(writer
.toString());
List<Integer> list = new ArrayList<Integer>();
while (tokens.hasMoreTokens()) {
String str = tokens.nextToken();
try {
list.add(new Integer(str));
} catch (NumberFormatException e) {
System.out.println("Error '" + str
+ "' is not an integer.");
}
}
// If you wanted an int array
// int[] array = new int[list.size()];
// for( int i = 0; i < array.length; i++){
// array[i] = list.get(i);
// }
return list;
}

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Als je code post, gebruik dan code tags aub; dat houdt het leesbaar ;) En support op code van derden doen we hier niet aan; daarvoor mag je contact op nemen met de auteur. Iedereen kan een stukje code copy/pasten van het web en roepen dat 't niet werkt. Wiedes. Probeer gewoon eens de code te begrijpen, te zien wat 't doet en waar nodig aan te passen naar je eigen wens(en).

[ Voor 66% gewijzigd door RobIII op 26-05-2009 22:43 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 10:43

Matis

Rubber Rocket

Je bent dus opzoek naar een java variant van fscanf voor c++ :P

Zoals Roblll zegt, laat maar eens zien waar het spaak loopt of wat je geprobeerd hebt!

Codetags *kuch*

public static List<Integer> :r

En waarom de StringWriter writer = new StringWriter(); ?

[ Voor 28% gewijzigd door Matis op 26-05-2009 22:43 ]

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • jeroenikke
  • Registratie: Augustus 2003
  • Laatst online: 20-09 13:04
Of maak gebruik van een Scanner, ook makkelijk
http://java.sun.com/javase/6/docs/api/java/util/Scanner.html

EDIT: dus makkelijk gezegd:
code:
1
2
3
4
      Scanner sc = new Scanner(new File("myNumbers"));
      while (sc.hasNextInt()) {
          int anInt = sc.nextInt();
      }


Scanner gebruikt automatisch whitespace als delimiter, dus tabs, spaties en new lines

[ Voor 56% gewijzigd door jeroenikke op 26-05-2009 22:46 . Reden: code fragment toegevoegd, uiteraard integer ipv long ]


Acties:
  • 0 Henk 'm!

  • apokalypse
  • Registratie: Augustus 2004
  • Laatst online: 10:21
Het probleem opsplitsen in meerdere kleine problemen (inlezen bestand, parseren etc.) en probeer dan deze subproblemen (stap voor stap) op te lossen.

Laat dan weten wat wel en niet lukt, dat niks lukt lijkt me stug.

ps. Lijkt me niet de bedoeling dat je gebruik maakt van een of andere 'geadvanceerde' libary in Java.

[ Voor 23% gewijzigd door apokalypse op 26-05-2009 22:44 ]


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 10:43

Matis

Rubber Rocket

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
maar het inlezen van een bestand, en de string parsen naar int kan allemaal in de zelfde class file gebeuren ?

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op dinsdag 26 mei 2009 @ 22:44:
maar het inlezen van een bestand, en de string parsen naar int kan allemaal in de zelfde class file gebeuren ?
Heb je überhaupt een idee waar je mee bezig bent of rommel je maar wat aan en copy/paste je net zo lang code van het web tot het werkt? Want als je ook maar enige basiskennis zou hebben zou je het antwoord op deze vraag prima zelf weten (en beseffen hoe "vreemd" je vraag is).

Kijk, we zijn allemaal ooit ergens begonnen en hebben het allemaal moeten leren. Dat is helemaal niet erg. We zijn ooit allemaal beginner geweest. Maar we verwachten hier op GoT wél dat je op z'n minst wat basiskennis onder de knie hebt en daarvoor zorgt voordat je een vraag stelt. Hoe kunnen wij je nu helpen als je niet weet waar we het over hebben? Als de basisbegrippen je te boven gaan kunnen wij je niet helpen en, again, kant-en-klare oplossingen posten doen we hier niet.
Give a man a fish and feed him for a day. Teach a man how to fish and feed him for a lifetime ;)
Wat voegt dat toe aan dit topic :? Wijs TS dan liever op de documentatie van de benodigde functie(s)/class(es) etc. die hij nodig heeft.

[ Voor 65% gewijzigd door RobIII op 26-05-2009 22:51 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
RobIII schreef op dinsdag 26 mei 2009 @ 22:45:
[...]

Heb je überhaupt een idee waar je mee bezig bent of rommel je maar wat aan en copy/paste je net zo lang code van het web tot het werkt? Want als je ook maar enige basiskennis zou hebben zou je het antwoord op deze vraag prima zelf weten (en beseffen hoe "vreemd" je vraag is).

Kijk, we zijn allemaal ooit ergens begonnen en hebben het allemaal moeten leren. Maar we verwachten hier op GoT wel dat je op z'n minst wat basiskennis onder de knie hebt.
Ja ik begin inderdaad net meet Java programmeren.
Ik heb wat geknooit in Netbeans met bufferedreader, en de Scanner.
Maar omdat ik echt met Intger waarden moet werken voor de coordinaten moeten ze idd geparst worden.
Het parsen is echter geen probleem.
maar mijn vraag is eigenlijk welke manier kan ik het beste gebruiken om zo'n regel in te lezen en er dan zelf het nummer en losse coordinaten van te maken.
Ik zoek ook geen kant en klare oplossing, maar wil graag met wat tips zelf leren Java programmeren

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Het is al eerder gezegd: hak je probleem in deelproblemen.

code:
1
2
3
4
5
Open bestand.
Lees regel in.
Haal cijfers uit regel (bijv. door te splitten op spaties).
Zet cijfers in de daarvoor bedoelde datastructuren.
Herhaal vanaf 2 tot End-of-file.


Zoiets. Zo moeilijk is het niet. Nu horen wij van jou graag wat er concreet niet lukt. Roepen het "lukt het me niet om het voor elkaar te krijgen" is nogal vaag. WAT lukt er niet?
Verwijderd schreef op dinsdag 26 mei 2009 @ 22:50:
welke manier kan ik het beste gebruiken om zo'n regel in te lezen en er dan zelf het nummer en losse coordinaten van te maken.
Je "weet" al (althans, ik neem dat maar even aan, want ik zie alleen 'geleende' code die niet van jezelf is) hoe je een regel leest. Je "weet" al hoe je de regel split op tokens (althans, ik neem dat maar even aan, want ik zie alleen 'geleende' code die niet van jezelf is). En dan snap je niet hoe je die elementen aan een variabele moet toewijzen :?

[ Voor 69% gewijzigd door RobIII op 26-05-2009 23:02 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
jeroenikke schreef op dinsdag 26 mei 2009 @ 22:42:
Of maak gebruik van een Scanner, ook makkelijk
http://java.sun.com/javase/6/docs/api/java/util/Scanner.html

EDIT: dus makkelijk gezegd:
code:
1
2
3
4
      Scanner sc = new Scanner(new File("myNumbers"));
      while (sc.hasNextInt()) {
          int anInt = sc.nextInt();
      }


Scanner gebruikt automatisch whitespace als delimiter, dus tabs, spaties en new lines
Dank voor je tip ik ga gelijk weer verder in Netbeans.
Ik heb met mijn main class een GUI class aangeroepen welke extends op een JFrame.
Dit werk verder prima. Ik ga nu nogmaals proberen het inlees gedeelte te fixen.

Acties:
  • 0 Henk 'm!

  • momania
  • Registratie: Mei 2000
  • Laatst online: 15:37

momania

iPhone 30! Bam!

offtopic:
Als het een school 'opdracht' is, op je leraar afstappen en zeggen dat je eerst OO wilt leren programmeren, zonder GUI, file I/O of andere zaken die daar niets me te maken hebben en waar je uiteindelijk niets aan hebt om te leren programmeren. ;)

Neem je whisky mee, is het te weinig... *zucht*


Acties:
  • 0 Henk 'm!

  • Kwistnix
  • Registratie: Juni 2001
  • Laatst online: 02:50
Aangezien je net begint met programmeren / Java zou ik IDE's, zoals NetBeans, voorlopig links laten liggen.
Pak een bare bones tekst editor, zoals Notepad, installeer de Sun JDK, ga code kloppen, compileer je source vanaf de command-line met javac (de compiler van Sun) en gebruik java om je programma vanaf diezelfde command-line te draaien. Voor opdrachten als dit is dit echt alles wat je nodig hebt.
Begrijp mij niet verkeerd, ik gebruik zelf ook een IDE en ik zou niet meer zonder willen, maar als je vanaf niets begint schept een IDE alleen maar verwarring. Het zijn complexe applicaties met te veel toeters en bellen en een te steile leercurve wanneer je net begint en je je de basis principes nog niet eigen hebt gemaakt. Een IDE neemt ook fundamentele taken voor je uit handen, die je mijns inziens echt essentiëel zijn om eerst zelf te doorgronden.

Het zal vast niet allemaal in één keer goed gaan en je zal vast wel gefrustreerd raken door allerlei wazig meldingen die door de compiler of de JVM uitgespuwt worden, maar dat zijn concrete problemen die je zelf kan onderzoeken en waar wij je hier eventueel mee kunnen helpen.

Maar goed, dat ter zijde :)

Acties:
  • 0 Henk 'm!

  • krvabo
  • Registratie: Januari 2003
  • Laatst online: 19-09 22:02

krvabo

MATERIALISE!

Je raadt iemand aan om terug te gaan naar 1980?
In Netbeans of Eclipse kun je prima werken als je er weinig kaas van hebt gegeten, en ook daarin kun je heel makkelijk apps maken zonder GUI. Je hebt dan echter WEL snelle toegang tot de javadoc en autocomplete van functies en variabelen.

Je zou hem echter wel BlueJ kunnen aanraden, dat is echt java voor de beginnende beginner.

Pong is probably the best designed shooter in the world.
It's the only one that is made so that if you camp, you die.


Acties:
  • 0 Henk 'm!

  • Kwistnix
  • Registratie: Juni 2001
  • Laatst online: 02:50
krvabo schreef op woensdag 27 mei 2009 @ 00:29:
Je raadt iemand aan om terug te gaan naar 1980?
In Netbeans of Eclipse kun je prima werken als je er weinig kaas van hebt gegeten, en ook daarin kun je heel makkelijk apps maken zonder GUI. Je hebt dan echter WEL snelle toegang tot de javadoc en autocomplete van functies en variabelen.

Je zou hem echter wel BlueJ kunnen aanraden, dat is echt java voor de beginnende beginner.
Ik zeg niet dat je niet met Eclipse of NetBeans kan werken "als je er geen kaas van gegeten hebt". Wat ik wel zeg is dat ik het niet verstandig vind om met een IDE te beginnen, omdat die over het algemeen een breed scala verwarrend opties bieden wanneer je net begint, zeker als je niet eens de terminologie onder de knie hebt. Natuurlijk ga je daar je weg wel in vinden, maar begrijp je dan als beginner echt wat je aan het doen bent? Of liever wat de IDE onder de motor kap allemaal vóór je doet? Volgens mij niet en naar mijn mening mis je dan een behoorlijk stuk fundamentele kennis.
Ik ben het daarom ook helemaal niet met je eens dat auto-completion een noodzakelijk, of zelfs wenselijke feature is voor iemand die net begint. Duik maar in de documentatie. Dan weet je in ieder geval waar je die moet vinden, hoe je die moet lezen en kan gebruiken om een probleem op te lossen.
De ondersteuning die een IDE je (vrijwel automatisch) biedt bij het goed installen van het classpath tijdens compilatie en executie: moet je naar mijn mening helemaal niet wilen als beginner. Dat is iets wat je tot op het bot zelf moet begrijpen.
Syntax-highlighting is voor de echt beginner geen goed idee, omdat je dan niet of minder met fundametele compiler foutmeldingen in aanraking komt, waar je ontzettend veel van kan leren. Zodra je dat een beetje gezien hebt is het wel een wenselijke feature, omdat je niet iedere keer een syntax foutje pas bij compilatie wil opmerken, want dat frustreert onnodig.

Nogmaals ik ben helemaal voor het gebruik van een IDE, maar ik ben en blijf van mening dat het voor absolute beginners geen goed startpunt is. Meningen daarover verschillen blijkbaar en niet geheel onverwacht. Maar goed, dit is een discussie die de TS niet verder helpt en mijn vorige post was als welgemeend advies bedoeld, dus laten wij niet verzanden in een over een weer discussie over het wel of niet gebruiken van een IDE :)

[ Voor 6% gewijzigd door Kwistnix op 27-05-2009 00:50 ]


Acties:
  • 0 Henk 'm!

  • krvabo
  • Registratie: Januari 2003
  • Laatst online: 19-09 22:02

krvabo

MATERIALISE!

offtopic:
Nou nou, je zegt nogal wat (voor mijn gevoel foute) dingen die mij tegenspreken en dan moeten we maar ophouden met de discussie zonder dat ik mijn weerwoord mag doen?
Laten we wel wezen: De TS is al geholpen (meerdere keren) met iets zooo enorm simpels dat deze discussie misschien nog enige waarde aan het topic kan geven.

Wat jij wil is dat de TS de complete en meest fundamentele dingen leert, terwijl hij nog nieteens weet hoe hij fatsoenlijk een bestand moet uitlezen. Dat is iemand echt compleet in het diepe gooien zonder dat hij kan zwemmen OF zwembandjes heeft. Als de TS al zoiets simpels niet onder de knie heeft wat moet ie dan met een 'non-static method cannot be referenced from a static context' omdat hij z'n mainclass niet juist heeft getikt in notepad (of elke andere basistekstverwerker). Waarom moet iemand die zoiets simpels wil doen meteen weten hoe en waarom hij z'n classpath juist instelt of uberhaupt gebruikt. Je laat een beginnend programmeur toch ook niet zijn eigen comparable class schrijven omdat hij dan weet hoe de Integers worden vergeleken binnen java?

Als je leert programmeren dan is syntax echt wel het minst boeiende van de hele ervaring. Als je goed kunt programmeren dan pak je enorm veel talen zo op, zelfs zonder dat je de syntax weet. Mits je uiteraard dan wel beschikt over een handige IDE. Ja, natuurlijk kun je ook alles zitten doorpluizen op een webbased web1.0-pagina van sun, maar is het niet drie keer zo handig dat je IDE dat netjes boven je functie zet? Er staat hetzelfde in, maar dan hoef je niet te zoeken.

Juist met autocomplete krijg je snel en makkelijk een duidelijk zicht of je functies juist worden aangeroepen. Als je vanuit een andere class je functie niet kunt aanroepen is ie dus bijvoorbeeld private. Als je het allemaal zou typen in een non-IDE-omgeving dan kom je daar pas achter nadat je het gebuild hebt in een andere applicatie, met onnodige tussenstappen.

IDE's zijn standaard helemaal niet zo onoverzichtelijk. Iedereen die echt geinteresseerd is in programmeren kan vaak binnen minuten helemaal overweg met een IDE en heeft hem dan nog ingesteld naar zijn voorkeuren ook.

Zoals ik ook al zei; je hoeft niet perse een grote IDE, maar pak als beginnend java-programmeur dan het programma BlueJ, wat er juist voor gemaakt is om zonder al die poeha van compilen mensen eerst de basis van java te leren: OO.

Pong is probably the best designed shooter in the world.
It's the only one that is made so that if you camp, you die.


Acties:
  • 0 Henk 'm!

  • boe2
  • Registratie: November 2002
  • Niet online

boe2

'-')/

FallenAngel666 schreef op woensdag 27 mei 2009 @ 00:22:
Aangezien je net begint met programmeren / Java zou ik IDE's, zoals NetBeans, voorlopig links laten liggen.
Pak een bare bones tekst editor, zoals Notepad, installeer de Sun JDK, ga code kloppen, compileer je source vanaf de command-line met javac (de compiler van Sun) en gebruik java om je programma vanaf diezelfde command-line te draaien. Voor opdrachten als dit is dit echt alles wat je nodig hebt.
Begrijp mij niet verkeerd, ik gebruik zelf ook een IDE en ik zou niet meer zonder willen, maar als je vanaf niets begint schept een IDE alleen maar verwarring. Het zijn complexe applicaties met te veel toeters en bellen en een te steile leercurve wanneer je net begint en je je de basis principes nog niet eigen hebt gemaakt. Een IDE neemt ook fundamentele taken voor je uit handen, die je mijns inziens echt essentiëel zijn om eerst zelf te doorgronden.

Het zal vast niet allemaal in één keer goed gaan en je zal vast wel gefrustreerd raken door allerlei wazig meldingen die door de compiler of de JVM uitgespuwt worden, maar dat zijn concrete problemen die je zelf kan onderzoeken en waar wij je hier eventueel mee kunnen helpen.

Maar goed, dat ter zijde :)
Ik ga hier heel erg NIET mee akkoord. Talen zoals java en c# + degelijke IDE zijn juist ideaal om te beginnen met leren programmeren, juist OMDAT de leercurve licht blijft en het hele debugging gebeuren kristalhelder is.

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind.' - Pratchett.


Acties:
  • 0 Henk 'm!

  • Enfer
  • Registratie: Februari 2004
  • Laatst online: 18-09 16:32
Boeboe schreef op woensdag 27 mei 2009 @ 09:29:
[...]


Ik ga hier heel erg NIET mee akkoord. Talen zoals java en c# + degelijke IDE zijn juist ideaal om te beginnen met leren programmeren, juist OMDAT de leercurve licht blijft en het hele debugging gebeuren kristalhelder is.
Als je net begint met programmeren (OOP, Java) vind ik zelf BlueJ een hele goede. Je kunt zelf je eigen instanties van Objecten aanmaken, en je kunt deze ook "inspecteren". Zo leer je imho goed begrijpen wat Objecten nou precies zijn, en hoe je ermee aan het werk kunt. Ook debuggen gaat simpel gezien het feit dat je na elke operatie je objecten kun inspecteren.

Voor de rest heeft BlueJ geen toeters en bellen die het leven van een beginnende programmeur alleen maar lastiger maken, en ook de "auto-generated" functies dragen imho niet echt bij aan het begrijpen van je programma.

[ Voor 13% gewijzigd door Enfer op 27-05-2009 09:37 ]

Pagina: 1