2017-09-23 13 views
0

Je suis en train de concevoir un programme qui utilise les données d'un fichier externe, stocke la variable aux tableaux et permet ensuite d'entrée manipulation.sample:chaînes et entiers via Manipuler tableau à deux dimensions à partir d'un fichier externe java

String1 intA1 intA2 
    String2 intB1 intB2 
    String3 intC1 intC2 
    String4 intD1 intD2 
    String5 intE1 intE2 

Je veux être en mesure de prendre ces valeurs de la matrice et de les manipuler comme suit; Pour chaque chaîne, je veux être en mesure de prendre StringX et l'informatique ((intX1 + intX2) /) Et pour chaque colonne int je veux être en mesure de le faire par exemple (intA1 + intB1 + intC1 + intD1 + intE1)

C'est ce que j'ai pour le moment, des conseils? ** Veuillez noter que les conventions de nommage java n'ont pas encore été enseignées dans mon cours.

public class 2D_Array { 
    public static void inputstream(){ 
    File file = new File("data.txt"); 
    try (FileInputStream fis = new FileInputStream(file)) { 
     int content; 
     while ((content = fis.read()) != -1) { 
      readLines("data.txt"); 
      FivebyThree(); 
      System.out.print((char) content); 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    } 
    public static int FivebyThree() throws IOException { 
    Scanner sc = new Scanner(new File("data.txt")); 
    int[] arr = new int[10]; 
    while(sc.hasNextLine()) { 

     String line[] = sc.nextLine().split("\\s"); 
     int ele = Integer.parseInt(line[1]); 
     int index = Integer.parseInt(line[0]); 
     arr[index] = ele; 

    } 
    int sum = 0; 
    for(int i = 0; i<arr.length; i++) { 
     sum += arr[i]; 
     System.out.print(arr[i] + "\t"); 
    } 
    System.out.println("\nSum : " + sum); 
    return sum; 
    } 
    public static String[] readLines(String filename) throws IOException { 
    FileReader fileReader = new FileReader(filename); 
    BufferedReader bufferedReader = new BufferedReader(fileReader); 

    List<String> lines = new ArrayList<String>(); 
     String line = null; 
     while ((line = bufferedReader.readLine()) != null) 
     { 
      lines.add(line); 
     } 

    return lines.toArray(new String[lines.size()]); 
     } 

    /* int[][] FivebyThree = new int[5][3]; 
     int row, col; 
     for (row =0; row < 5; row++) { 
      for(col = 0; col < 3; col++) { 
       System.out.printf("%7d", FivebyThree[row][col]); 
      } 
      System.out.println();*/ 


    public static void main(String[] args)throws IOException { 

    inputstream(); 

    } 
} 
+0

et quelle est la question que vous avez? – nullpointer

Répondre

1

Je vois que vous avez lu data.txt deux fois et ne pas utiliser du tout premier résultat lu. Je ne comprends pas, ce que vous voulez faire avec String, mais ayant tableau à deux dimensions et de calculer la somme des colonnes de int est très facile:

public class Array_2D { 
    static final class Item { 
     final String str; 
     final int val1; 
     final int val2; 

     Item(String str, int val1, int val2) { 
      this.str = str; 
      this.val1 = val1; 
      this.val2 = val2; 
     } 
    } 

    private static List<Item> readFile(Reader reader) throws IOException { 
     try (BufferedReader in = new BufferedReader(reader)) { 
      List<Item> content = new ArrayList<>(); 
      String str; 

      while ((str = in.readLine()) != null) { 
       String[] parts = str.split(" "); 
       content.add(new Item(parts[0], Integer.parseInt(parts[1]), Integer.parseInt(parts[2]))); 
      } 

      return content; 
     } 
    } 

    private static void FivebyThree(List<Item> content) { 
     StringBuilder buf = new StringBuilder(); 
     int sum1 = 0; 
     int sum2 = 0; 

     for (Item item : content) { 
      // TODO do what you want with item.str 
      sum1 += item.val1; 
      sum2 += item.val2; 
     } 

     System.out.println("str: " + buf); 
     System.out.println("sum1: " + sum1); 
     System.out.println("sum2: " + sum2); 
    } 


    public static void main(String[] args) throws IOException { 
     List<Item> content = readFile(new InputStreamReader(Array_2D.class.getResourceAsStream("data.txt"))); 
     FivebyThree(content); 
    } 
}