如何将信息与 .text 分开保存到 Java 中的多个字符串中

How to save information separately form .txt into multiple strings in Java

我有一个mydata.txt,我想在其中单独阅读信息。

第一行另存为“动物园编号”、“动物编号”

第2行到第5行保存为“矩阵中动物的数据”

第6行另存为狗“数量”“食欲”“体重”“身高”

2 83
30 50 21 42 0 3 
55 56 78 34 2 1
87 76 23 21 3 2
88 22 56 78 32 8
dog 23 79 67 21

我编写的代码如下,但是,我的代码只能将 mydata.txt 中的所有内容重新加载到字符串中。但我想将这些信息分别保存到单独的字符串(对于该矩阵)和变量(例如狗的编号、狗的食欲...)中。我该怎么做?

 private void readFile(String fileName){

        try{

            File file = new File("myData.txt");
            FileReader fileReader = new FileReader(file);
            BufferedReader bufferedReader = new BufferedReader(fileReader);
            StringBuffer stringBuffer=new StringBuffer();   

            String line = bufferedReader.readLine();

            while ((line = bufferedReader.readLine()) != null)  {
                stringBuffer.append(line);     
                stringBuffer.append("\n");  
            }

            fileReader.close();
            bufferedReader.close();

            System.out.println("Contents of File: ");
            System.out.println(stringBuffer.toString());  

        }catch (IOException e){
            System.out.println(e.getMessage());
        }
    }

这里你应该使用 String class.

中的 split 方法
  String[] rowOne = line.split(" ");
  int zooNumber = Integer.valueOf(rowOne[0]);
  int animalNumber = Integer.valueOf(rowOne[1]);

因此,当您使用 " " 拆分时,将为您提供由空格拆分的字符串数组。然后逐个阅读索引将为您提供所需的值。

更新答案:您可以按如下方式逐行获取值:

int i = 1;

      while ((line = bufferedReader.readLine()) != null) {

        if (i == 1) {
          String[] rowOne = line.split(" ");
          int zooNumber = Integer.valueOf(rowOne[0]);
          int animalNumber = Integer.valueOf(rowOne[1]);
        } else if(i > 1 && i < 6) {
          String[] midRows = line.split(" ");
          // retrieve values at index 0, 1, 2, 3, 4 ,5
          // First 2nd Row
          // Index 0 : 30
          // Index 1 : 50
          //,...
        } else if(i == 6) {
          String[] midRows = line.split(" ");
          // retrieve values at index 0, 1, 2, 3, 4
          // First 6th Row
          // Index 0 : dog
          // Index 1 : 23
          //,...
        } else {
          break;
        }
        i++;
      }

您可以像这样设置 myData.txt 文件:
zoo_number2,animal_number83
键 1 30,键 2 50...
...
动物狗,dog_appetite 23,...


然后你要做的就是像这样遍历每一行:
    import java.util.*;

    import java.io.*;

    public class App{
      public static void main(String[] args) throws IOException{
        File file = new File("myData.txt");
        FileReader fileReader = new FileReader(file);
        Scanner sc = new Scanner(fileReader);

        Map<String, String> map = new HashMap<String, String>();

        while(sc.hasNextLine()){
          String[] inputText = sc.nextLine().trim().split(",");
          for(String sentence : inputText){//every key_Value pair in a line
            String key = sentence.split(" ")[0];//key, value in key_value pair
            String value = sentence.split(" ")[1];
            map.put(key, value);
          }
      }

      System.out.println(map);

      sc.close();
  }
}

输出:{key1=30, key2=50, number=23, zooNumber=2, animal=dog, animal=83}

保持思维导图不接受重复键