有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java读取文件并将其解析为不同的数组

我将读取一个文件内容作为程序的输入

我将其存储为一个字符串,并将其拆分为两个字符串

File file = new File("question.txt");
PrintWriter pw = new PrintWriter(file);
pw.write("81 : (1,53.38,$45) (2,88.62,$98) (3,78.48,$3) (4,72.30,$76) (5,30.18,$9) (6,46.34,$48)");
pw.close();
BufferedReader br = new BufferedReader(new FileReader(file));
String line = br.readLine();
Map<Integer, Object> map = new HashMap<Integer, Object>();
int i = 0;
Demo d = new Demo();
String[] part = line.split(":");
String part1 = part[0].trim();
String part2 = part[1].trim();

输入:81 : (1,53.38,$45) (2,88.62,$98) (3,78.48,$3) (4,72.30,$76) (5,30.18,$9) (6,46.34,$48)

输出:

totalWeight = 81;
index[] = {1,2,3,4,5,6}; 
weight[] = {53.38,88.62,78.48,72.30,30.18,46.34};  
value[] = {45,98,3,76,9,48}; 

第二个字符串在括号内包含3个值。第一个数字是“索引”,第二个数字是“权重”,第三个数字是“值”
如何将其拆分并存储到3个不同的阵列中

我知道一种方法是将其解析为一个类的对象,该类有3个数组,并为它们赋值
但是,有没有更好的方法来做到这一点呢


共 (2) 个答案

  1. # 1 楼答案

    使用以下代码分析以下格式的字符串:

    String[] structured = part2.replaceAll("[()]", "").split(" ");
    
    List<String> indexes = new ArrayList<>();
    List<String> weights = new ArrayList<>();
    List<String> values = new ArrayList<>();
    
    for (String elem : structured) {
        String[] parsed = elem.split(",");
        indexes.add(parsed[0]);
        weights.add(parsed[1]);
        values.add(parsed[2]);
    }
    
  2. # 2 楼答案

    String[] part2 = part[1].replace("(", "").trim().split(")");
    List<String> indices = new ArrayList<String>();
    List<String> weights= new ArrayList<String>();
    List<String> values = new ArrayList<String>();
    
    for (String s : part2)
    {
       String item = s.split(",");
       indices.add(item[0]);
       weights.add(item[1]);
       values.add(item[2]);
    }
    
    // to get them as arrays
    String[] allWeightsArray = weights.toArray(new String[]); ...