2017-11-07 5 views
0

Ich habe diese Textdatei:eine Matrix aus einer Textdatei erstellen - Java

2 
2 
12 
13 
23 
24 
49 
59 
69 
79 

die ersten beiden Zahlen sollten die Zeilen und Spalten der Matrix sein, die 2x2 in diesem Fall ist. Mein Problem, das ich versuche, zu umgehen, besteht darin, einen Weg zu finden, ein zweites 2D-Array einzubauen, das die zweite Matrix enthält.

mein Code:

 Scanner fileInput = new Scanner(new File("input1.txt")); 
     int n1 = fileInput.nextInt(); 
     int n2 = fileInput.nextInt(); 
     System.out.print("matrix is " + n1 + "x" + n2 +"\n"); 

     int [][] firstMatrix = new int [n1][n2]; 
     int [][] secondMatrix = new int [n1][n2]; 

     for(int i = 0; i < n1; ++i) 
     { 
      for(int j = 0; j < n2; ++j) 
      { 
       if(fileInput.hasNextInt()) 
       { 
        firstMatrix[i][j] = fileInput.nextInt(); 
       }     
      } 
     } 

     System.out.println("Matrices: "); 
     for(int i = 0; i < n1; i++) 
     { 
      for(int j = 0; j < n2; j++) 
      { 
       System.out.println(firstMatrix[i][j]); 
      } 
     } 

es nur gibt die folgenden:

12 
13 
23 
24 

Wie mache ich es die nächsten vier Zeilen von ganzen Zahlen aus der Datei lesen? Es wäre auch hilfreich sein, zu verstehen, wie kann ich es so etwas wie dies aussieht:

12 13 

23 24 

EDIT: Dieser Ansatz schien mit der letzten Frage zu helfen:

for(int i=0; i<n1; i++) 
     { 
      for(int j=0; j<n2; j++) 
      { 
       System.out.print(firstMatrix[i][j] + " "); 
       //System.out.print(secondMatrix[i][j] + " "); 

      } 
      System.out.println(); 
     } 

Das einzige Problem, das ich mit Blick auf bin Jetzt ist es möglich, die vier anderen Ganzzahlen einzuschließen und sie in eine Matrix zu verwandeln.

Antwort

0

Sie können nur Daten für die beiden Arrays aus Datei sequentiell wie folgt lesen:

import java.io.File; 
import java.io.FileNotFoundException; 
import java.util.Scanner; 

public class App { 

    private static void readMatrix(final Scanner scanner, final int[][] matrix) { 
     for (int i = 0; i < matrix.length; ++i) { 
      for (int j = 0; j < matrix[i].length; ++j) { 
       if (scanner.hasNextInt()) { 
        matrix[i][j] = scanner.nextInt(); 
       } 
      } 
     } 
    } 

    private static void displayMatrix(final int[][] matrix) { 
     for (int i = 0; i < matrix.length; i++) { 
      for (int j = 0; j < matrix[i].length; j++) { 
       System.out.print(matrix[i][j] + " "); 
      } 
      System.out.println(); 
     } 
    } 

    public static void main(final String... args) throws FileNotFoundException { 
     final Scanner scanner = new Scanner(new File("input.txt")); 

     final int n1 = scanner.nextInt(); 
     final int n2 = scanner.nextInt(); 

     System.out.print(String.format("The matrix is %d x %d \n", n1, n2)); 

     final int[][] firstMatrix = new int[n1][n2]; 
     final int[][] secondMatrix = new int[n1][n2]; 

     System.out.println("Reading data to first matrix"); 
     readMatrix(scanner, firstMatrix); 
     System.out.println("Reading data to second matrix"); 
     readMatrix(scanner, secondMatrix); 

     System.out.println("First Matrix"); 
     displayMatrix(firstMatrix); 
     System.out.println("Second Matrix"); 
     displayMatrix(secondMatrix); 
    } 
} 
-1
for(int i = 0; i < n1*n1; i++) 
    { 
     for(int j = 0; j < n2*n2; j++) 
     { 
      if(fileInput.hasNextInt()) 
      { 
       if(i < n1){ 
       firstMatrix[i][j] = fileInput.nextInt(); 
       } 
       else 
        { 
        secondMatrix[i][j] = fileInput.nextInt(); 
        } 
      }     
     } 
    } 

Sie haben zwei Matrix von n * size n so können Sie wie folgt tun:

1

Sie können gruppieren zu 1-Array:

int matrixNumb = 2; // number of matrix 
int [][][] matrix = new int [matrixNumb][n1][n2]; 
for (int h = 0; h < matrixNumb; h++) 
{ 
    for(int i = 0; i < n1; ++i) 
    { 
     for(int j = 0; j < n2; ++j) 
     { 
      if(fileInput.hasNextInt()) 
      { 
       matrix [h][i][j] = fileInput.nextInt(); // read from file 
      }     
     } 
    } 
} 

System.out.println("Matrices: "); 
for (int h = 0; h < matrixNumb; h++) 
{ 
    for(int i = 0; i < n1; i++) 
    { 
     for(int j = 0; j < n2; j++) 
     { 
      System.out.print(matrix[h][i][j]); 
      System.out.print("\t"); //How do you want to separate columns? 
     } 
     System.out.print("\r\n"); //How do you want to separate rows? 
    } 
    System.out.println(); //How do u want to print next matrix? 
} 

Ich habe es nicht, kompiliert oder laufen aber hoffe es hilft.

+0

ich sie auf die Durchführung martix Mathe planen, ich glaube, es wäre einfacher, zwei separate Arrays zu haben! Vielen Dank für Ihre Anregungen, es war hilfreich. Immer noch Probleme mit der zweiten Matrix. Es druckt '0 0 0 0' –

+0

Sie können leicht getrennte Matrix nehmen: 'int [] [] firstMaxtrix = Matrix [0]' und 'int [] [] secondMatrix = Matrix [1]' –

Verwandte Themen