通过外部文件java中的二维数组操作字符串和整数

时间:2017-09-23 06:58:26

标签: java arrays io

我正在尝试设计一个从外部文件获取数据的程序,将变量存储到数组中,然后允许使用manip.sample输入:

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

我希望能够从数组中获取这些值并按如下方式操作它们; 对于每个字符串,我希望能够采用StringX和计算((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();

  }
}

1 个答案:

答案 0 :(得分: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);
    }
}