读取文件并在索引位置存储整数

时间:2015-12-04 04:38:03

标签: java arrays

我对Java很陌生;我将如何读取文件,然后在某个索引中存储整数?

所以这是文件:

17 15 27 7 19 4 29 101 22 29 14 6 14 89 22 47 28 28 29 69 2 27 28 18 7 10 19 90 13 55 18 96 5 7 6 32 26 51 25 65 29 54 14 79 4 17 5 59 20 6 0 55 5 38 

我希望将它们作为成对读取,其中第一个数字是索引,第二个数字是要存储在索引中的数字。

array[17] = 15
array[27] = 7
array[19] = 4

依此类推,直到文件没有更多的整数来阅读

更新

另外,如果它有所不同,我有一个2D数组将其存储到

4 个答案:

答案 0 :(得分:0)

首先将输入作为字符串,然后使用string.split(" ")将其拆分为数组。然后使用Integer.parseInt()将数组中的每个值转换为相应的整数值,将名称数组转换为A。 创建一个大小等于的整数数组B(数组A中偶数位置的最大值+ 1)。然后Ans再次遍历数组A以将值设置在相应的位置。

答案 1 :(得分:0)

实现这一目标的几种方法。

我总是喜欢的一种不错的方法是使用Properties类。添加了一个片段,以显示该类的工作原理。 :)如果您有任何疑问,请告诉我。

    public void writeToProp(){
       Properties defaultProperties = new Properties();
       defaultProperties.setProperty("17", "15");
       defaultProperties.setProperty("27", "7");
       defaultProperties.setProperty("19", "4");
          try (FileOutputStream stream = new FileOutputStream(PATH_TO_SAVE_YOUR_FILE)) {
        defaultProperties.store(stream, null);
       stream.close();
       } catch (Exception ex) {
           ex.toString();
       }
    }

    public Properties readFromProp(){
       Properties prop = new Properties();
       InputStream stream = null;
          try {
              stream = new FileInputStream(PATH_TO_SAVE_YOUR_FILE);
              prop.load(stream);
       } catch (IOException ex) {
              ex.printStackTrace();
       } finally {
              if (stream != null) {
                 try {
                     stream.close();
                 } catch (IOException e) {
                     e.printStackTrace();
                 }
       }
    }

    public void getValue(String key,String value, Properties properties) {
           properties.setProperty(key, value);
    }

    public String setValue(String key, Properties properties) {
           return properties.getProperty(key);
    }

答案 2 :(得分:0)

您可以使用此简单代码段

int array[] = new int[SIZE];
try(BufferedReader br = new BufferedReader(new FileReader(file))) {
    for(String line; (line = br.readLine()) != null; ) {    
        String[] split = line.trim().split(" ");
        for(int i = 0; i+1 < split.length; i++){
            array[Integer.parseInt(split[i])] = Integer.parseInt(split[i+1]);
        }
    }
}

对于2D数组,

int array[][] = new int[SIZE][];
try(BufferedReader br = new BufferedReader(new FileReader(file))) {
    for(String line; (line = br.readLine()) != null; ) {
        String[] split = line.trim().split(" ");
        for(int i = 0; i+2 < split.length; i++){
            int j = Integer.parseInt(split[i]);
            int k = Integer.parseInt(split[i + 1]);
            int l = Integer.parseInt(split[i + 2]);
            array[j][k] = l;
        }
    }
}

答案 3 :(得分:-1)

您也可以使用扫描仪阅读文件。

Scanner sc = new Scanner(new File("nums.txt"));

然后运行while循环运行,直到文档不再存在。像:

public class ReadNums {
     public static void main(String[] args) {

     Scanner sc = new Scanner(new File("nums.txt"));

     int[][] A = new int[160][30];

     while (sc.hasNext()) {
          String s = sc.readNext();
          String s2 = sc.readNext();
          int num1 = Integer.parseInt(s);
          int num2 = Integer.parseInt(s);
          A[num1][num2];
     }

     }
}