Java 执行split()后如何在数组中存储值?

Java 执行split()后如何在数组中存储值?,java,arrays,split,Java,Arrays,Split,我有一个名为fracts.txt的txt文件,其中包含一些分数。我不知道数据的大小。我需要拆分分子和分母,并为它们创建两个数组。例如,6/7和5/4在fractions.txt中。我需要两个数组,比如a[]和b[]。然后a[0]=6,a[1]=5,b[0]=7,b[1]=4。怎么做 import java.util.Scanner; import java.io.FileInputStream; import java.io.PrintWriter; import java.io.FileOut

我有一个名为fracts.txt的txt文件,其中包含一些分数。我不知道数据的大小。我需要拆分分子和分母,并为它们创建两个数组。例如,6/7和5/4在fractions.txt中。我需要两个数组,比如a[]和b[]。然后a[0]=6,a[1]=5,b[0]=7,b[1]=4。怎么做

import java.util.Scanner;
import java.io.FileInputStream;
import java.io.PrintWriter;
import java.io.FileOutputStream;
import java.io.FileNotFoundException;
import java.util.*;
public class Fraction2
{

public static void main(String[] args){
    Scanner inputStream = null;
    PrintWriter outputStream = null;
    try{
    inputStream = new Scanner( new FileInputStream ("fractions.txt"));
    outputStream = new PrintWriter (new FileOutputStream("terminal.txt"));
    }
    catch (FileNotFoundException e){
    System.out.println("File not found.");
    System.exit(0);
    }
    String data;
    while (inputStream.hasNextLine()){
        data = inputStream.nextLine();
        String parts[] = data.split("/");

    }


    outputStream.close();
    inputStream.close();

}
}
只需使用两个列表

List<> numerators = new ArrayList<String>();
List<> denominators = new ArrayList<String>();
while (inputStream.hasNextLine()){
    data = inputStream.nextLine();
    String parts[] = data.split("/");
    numerators.add(parts[0]);
    denominators.add(parts[1]);
}
List numerators=newarraylist();
列表分母=新的ArrayList();
while(inputStream.hasNextLine()){
data=inputStream.nextLine();
字符串部分[]=数据。拆分(“/”);
加上(第[0]部分);
增加(第[1]部分);
}

如果必须,您可以将它们转换为数组。

如果您不确定文本文件中有多少分数,我将使用
ArrayList
存储每个变量

// Initialize ArrayLists
ArrayList<Integer> numerators = new ArrayList<Integer>();
ArrayList<Integer> denominators = new ArrayList<Integer>();

使用ArrayList,您可以根据需要存储尽可能少或尽可能多的分数。

我建议您使用以下值对象:

class RationalNumber {
    private final int numerator;
    private final int denominator;
    // add getters and a constructor that takes both values as parameters
}
然后您可以创建这种类型的实例并将它们存储在类似于
ArrayList
的东西中

List<RationalNumber> numbers = new ArrayList<>(); // defined outside cycle
// ...
numbers.add(new RationalNumber(Integer.parseInt(parts[0]), Integer.parseInt(parts[1]));
List number=new ArrayList();//外循环定义
// ...
add(新的有理数(Integer.parseInt(parts[0]),Integer.parseInt(parts[1]);

您的代码有什么问题?请不要在没有具体说明的情况下问“为什么我的代码不起作用”问题。假设每行有一个分数,即第一次迭代为6/7。第一次迭代将为您提供部分[0]=6和部分[1]=7。现在有什么问题吗?您可以以任何方式将它们保存在terminal.txt文件中。我编写System.out.println(部分[0])在while循环之后,它出现错误。如果您尝试在while循环外部打印部件[0],您将得到错误确认。因为部件[]只在循环内有它的作用域。要在循环外打印它,请在循环开始之前声明它。“它有错误”不是一个问题描述。再试一次。再试一次。我建议不要这样做:在两个列表之间有一个有理数。这不适合OOP-heck,你甚至可以用Pascal或C创建一个结构。
List<RationalNumber> numbers = new ArrayList<>(); // defined outside cycle
// ...
numbers.add(new RationalNumber(Integer.parseInt(parts[0]), Integer.parseInt(parts[1]));