Zahlen einlesen und in int Array speichern

Neue Frage »

Auf diesen Beitrag antworten »
Tommy1234 Zahlen einlesen und in int Array speichern

Hallo zusammen,

ich habe eine Anfängerfrage obwohl ich eigentlich schon weiter bin mit java.

Also zum Problem:

Ich habe eine Textdatei in der 20748 Zahlen sind, die jeweils durch ein Komma voneinander getrennt sind.

Nun möchte ich die Zahlen einlesen und in einem eindimensionalen int-Array speichern, sodass ich sie mir auch auf der Konsole in der richtigen Reihenfolge ausgeben lassen kann.

Warum will ich das?

Nun ja, ich programmiere einen Megaman Klon ( NES erster Teil ).

Allerdings funktioniert meine bisherige Methode um eine TiledMap zu laden nicht mehr, da zu viele Werte in dem int Array stehen, wenn ich dieses im Quellcode direkt lade.

Nun hab ich in der API nachgesehen und FileReader gefunden.

Leider weiss ich noch nicht ganz genau, wie der funktioniert oder wie man ihn richtig implementiert.

Hier mal meine Methode, die die TileMap lädt:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
public void generateMap(int level_nr){
		
        if(level_nr == 1){
            tiles_w=2;
            tiles_h=2;
        }
        
        
		levelMap = new int[tiles_h][tiles_w];
	     
		for(int h=0;h<tiles_h;h++){
            for(int w=0;w<tiles_w;w++){
                if(level_nr==1){
                    levelMap[h][w]= level[byte_nr];// das level Array ist das int Array, das ich ausgelesen haben möchte
                    byte_nr++;
                }
            }
        }
        
    }


Wäre für ilfe sehr dankbar


Gruß Tommy
 
Auf diesen Beitrag antworten »
eulerscheZahl

Annahme: du hast mindestens Java7

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class Main {

	public static void main(String[] args) {
		Path path = Paths.get("path/to/file");
		try {
			byte[] data = Files.readAllBytes(path);
			for (byte b : data) {
				System.out.println(b);
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
Auf diesen Beitrag antworten »
Tommy1234

Hallo,

ich war als ich das gepostet habe in völliger Umnachtung und auch etwas verzweifelt. Es ist natürlich klar wie das funktioniert. Habs zwar anders wie Du aber dennoch danke für die Antwort.

Hier nochmal der Code um aus einer Textdatei Zahlen als String auszulesen, diese in einem String Array zu speichern und anschließend in ein int Array zu konvertieren:

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:
public void generateMap(int level_nr,String filename){
		
        if(level_nr == 1){
            tiles_w=273;
            tiles_h=76;
        }
        
        String stringMap = "";

        try {
        BufferedReader reader = new BufferedReader(new FileReade(filename));
        String line = null;
		  
        while ((line = reader.readLine()) != null) {
	stringMap += line;
			}
        } catch (IOException e) {e.printStackTrace();}

        if(stringMap != ""){
			
        String[] stringarray = stringMap.split(",");
        int[] level = new int[stringarray.length];
        for(int i = 0;i<stringarray.length;i++){
	level[i] = Integer.parseInt(stringarray[i]);
        }
		  
        levelMap = new int[tiles_h][tiles_w];
        for(int h=0;h<tiles_h;h++){
              for(int w=0;w<tiles_w;w++){
	  if(level_nr==1){
	         levelMap[h][w]= level[nr];
	         nr++;
	   }
               }
         }
    }
    }


Das ganze erzeugt dann die Map aus der Textdatei und kan auch imKontruktor geladen werden.

Betrachtet das Thema als gelöst.

Danke nochmal.

Gruß Tommy
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »