2017-09-23 82 views
0

我试图设计一个程序,从外部文件中获取数据,存储所述变量的阵列,然后通过操纵二维阵列字符串和整数允许manipulation.sample输入:从外部文件的java

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

我希望能够从数组中获取这些值并按如下操作它们: 对于我希望能够采取字符串X和计算((intX1 + intX2)/) 每个串和每个INT列我希望能够例如(intA1 + intB1 + INTC1 + intD1 + intE1)

这是我到目前为止,有什么提示? **请注意java命名约定还没有在我的课程中教过。

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

,什么是你有问题? – nullpointer

回答

1

我看到你读了data.txt两次,根本不使用第一次读取结果。我不明白,你想与String做,但有二维阵列和计算int列的总和什么是很容易的:

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); 
    } 
}