Java 如何将分数分成两个整数?

Java 如何将分数分成两个整数?,java,fractions,Java,Fractions,我正在开发一个程序,需要从包含分数的外部文件创建一个对象列表。我需要将分子和分母分离成两个独立的整数,而不需要包含“/” 这就是我到目前为止所做的: while (fractionFile.hasNextLine()){ num.add(fractionFile.nextInt()); den.add(fractionFile.nextInt()); } 我不知道如何在“/”之前读取num.add,在“/”之后读取den.add 任何帮助都将不胜感激。使用类方法使用

我正在开发一个程序,需要从包含分数的外部文件创建一个对象列表。我需要将分子和分母分离成两个独立的整数,而不需要包含“/”

这就是我到目前为止所做的:

while (fractionFile.hasNextLine()){

    num.add(fractionFile.nextInt());
    den.add(fractionFile.nextInt());

    }
我不知道如何在“/”之前读取num.add,在“/”之后读取den.add


任何帮助都将不胜感激。

使用类方法使用所需的模式拆分字符串。

使用类方法使用所需的模式拆分字符串。

假设文件中有多个分数由令牌分隔(例如行制动器或
):

String fraction="1/2";
String []part=fraction.split("/");  
num.add(part[0])
den.add(part[1])
String input=“1/2;3/4;5/6”;
字符串标记=“;”
字符串[]currentFraction=null;
最终列表nums=newlinkedlist();
最终列表denoms=newlinkedlist();
for(字符串s:input.split(令牌)){
currentFraction=s.split(“/”);
如果(currentFraction.length!=2)
继续;
nums.add(Integer.parseInt(currentFraction[0]);
add(Integer.parseInt(currentFraction[1]);
}

假设您的文件中有多个分数由标记分隔(例如,线路制动或
):

String input=“1/2;3/4;5/6”;
字符串标记=“;”
字符串[]currentFraction=null;
最终列表nums=newlinkedlist();
最终列表denoms=newlinkedlist();
for(字符串s:input.split(令牌)){
currentFraction=s.split(“/”);
如果(currentFraction.length!=2)
继续;
nums.add(Integer.parseInt(currentFraction[0]);
add(Integer.parseInt(currentFraction[1]);
}

你能解释一下我是如何做到的吗?你能解释一下我是如何做到的吗?调用split两次并不是我从外部文件读取分数的最有效的方法。如何将第二次拆分发送到den?共享您文件的快照。调用拆分两次并不是从外部文件读取分数的最有效方法。如何将第二次拆分发送到den?共享您文件的快照。我们可以看到包含分数的文件的大纲吗?我们可以看到包含分数的文件的大纲吗?
while (fractionFile.hasNextLine()){
   //If file contains
   // 1/2
   // 2/4
   // 5/6
    String line = fractionFile.nextLine();
    String split[]=line.split("/");
    num.add(Integer.parseInt(split[0])); // 1 stored in num
    den.add(Integer.parseInt(split[1])); // 2 stored in den
}
    String   input           = "1/2;3/4;5/6";
    String   token           = ";"
    String[] currentFraction = null;

    final List<Integer> nums   = new LinkedList<>();
    final List<Integer> denoms = new LinkedList<>();

    for (String s : input.split(token)) {
        currentFraction = s.split("/");
        if (currentFraction.length != 2)
            continue;

        nums.add(Integer.parseInt(currentFraction[0]));
        denoms.add(Integer.parseInt(currentFraction[1]));
    }
BufferedReader br = null;
    Integer num = 0;
    Integer den = 0;
    try {

        String sCurrentLine;

        br = new BufferedReader(new FileReader("test"));

        while ((sCurrentLine = br.readLine()) != null) {
            String [] str = sCurrentLine.split("/");
            if(str.length>2)throw new IllegalArgumentException("Not valid fraction...");

            num = num+Integer.parseInt(str[0]);
            den = den+Integer.parseInt(str[1]);
        }

        System.out.println(num);
        System.out.println(den);

    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            if (br != null)br.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }