2 votes

Comment convertir mon fichier txt en une chaîne de caractères ?

Comment convertir mon fichier txt en un fichier de type String que j'ai lu dans mon newGame méthode ? J'ai besoin d'utiliser une interface donnée. Le fichier txt utilisé est une matrice 9x9. Je dois ensuite le convertir en un tableau 2D. Comment puis-je convertir le fichier String en un fichier int 2D ?

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.PrintWriter;
import java.util.InputMismatchException;
import java.util.Scanner;

import javax.swing.JFileChooser;
import javax.swing.filechooser.FileNameExtensionFilter;

public class GameManager implements SudokuBoardManager
{

private static GameManager myBoard;

public static void main(String[] args)
{
    myBoard = new GameManager();
    JFileChooser chooser = new JFileChooser();
    myBoard.newGame(chooser.getSelectedFile());
    System.out.println(myBoard.toString());

}

@Override
public void setValueAt(int r, int c, int v) throws InputOutOfRangeException, ValueNotValidException 
{

}

@Override
public int getValueAt(int r, int c) throws InputOutOfRangeException 
{
    return 0;
}

@Override
public int[] displayPossibleValues(int r, int c)throws InputOutOfRangeException 
{
    return null;
}

public String toString()
{

    return " ";
}

@Override
public void newGame(File gameFile) 
{
    JFileChooser chooser = new JFileChooser();
    int status;
    Scanner in = null;

    chooser.setDialogTitle("Select Sudoku Game File");
    status = chooser.showOpenDialog(null);
    if(status == JFileChooser.APPROVE_OPTION)
    {
        try
        {
            gameFile = chooser.getSelectedFile();
            in = new Scanner(gameFile); 
        }
        catch(InputMismatchException e)
        {
            e.printStackTrace();
        } catch (NumberFormatException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

}

3voto

Premraj Points 2931

Essayez -

String output = new Scanner(new File("file.txt")).useDelimiter("\\Z").next();

1voto

Reimeus Points 93429

Vous pouvez faire correspondre vos données avec l'interface en utilisant un fichier délimité par des virgules et des lignes nouvelles. Scanner avec une boucle for imbriquée :

Scanner scanner = new Scanner(new File("game.txt")).useDelimiter(",|\r\n");
for (int i=0; i < 9; i++) {
   for (int j=0; j < 9; j++) {
      myBoard.setValueAt(i, j, scanner.nextInt());
   }
}

Setter ressemblerait à ceci :

public void setValueAt(int r, int c, int v) throws InputOutOfRangeException, ValueNotValidException {
    // Handle InputOutOfRangeException, ValueNotValidException
    boardValues[r][c] = v;
}

0voto

Debadyuti Maiti Points 939

Il suffit de lire chaque ligne en utilisant la méthode readline() de BufferedReaders. Puis trouvez les entiers dans cette ligne un par un et continuez à les ajouter dans votre tableau 2d.

0voto

David Soroko Points 1496

Jetez un coup d'œil à org.apache.commons.io.IOUtils.readFully() et org.apache.commons.io.IOUtils.readLines .

L'url est http://commons.apache.org/io/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X