如何从输入文件中提取数字并将其用于您想要的任何输出?

时间:2016-09-17 20:16:59

标签: java

假设我有一个输入文件(文本文件),其信息按以下方式排列:前5个数字将是a,b,c,m和n。 a和b是集合R1的(域,范围)值,使得(1,2 ... a),(1,2 ... b)。数字m表示在前5个数字之后的行数(新行/代码),给定的有序对跟随(或不跟随)集合R1的可能函数。数字n表示跟随集合R2(1,2 ... b),(1,2 ... c)中的函数的规则的行数(在m行之后)。

示例输入文件:

1 3 5 2 1

(1,3)

(1,2)

(4,5)

现在我必须制作一个Java程序,它采用该特定格式的文本文件并确定并输出:

  1. 是的,如果set R1 的有序对是一个函数,否则为NO。

  2. 是的,如果set R2 的有序对是函数,否则为NO。

  3. 是的,如果set R1 的有序对是一个函数,它就是。 NA如果它不是一个功能。否则,如果它是一个功能而不是。

  4. 是的,如果set R2 的有序对是一个函数,那么它就是。 NA如果它不是一个功能。否则,如果它是一个功能而不是。

  5. 如果两者都是函数,则计算函数g◦f并将其作为对输出 其中第一个坐标 按排序顺序排列。例如,如果g ◦f映射1至10,2至4和3至15,您的代码必须输出此部分, 以下三行。 (1,10) (2,4) (3,15) 如果其中任何一个不是函数,则只输出该部分的NA。

  6. 到目前为止,我所知道的是打印输出文件中给出的所有数据作为输出。我不知道如何从输入文件中选择特定部分并使用它来查看是否可以使用某个函数一个特定的领域..我怎么会这样做..?

    import java.io.FileNotFoundException;
    import java.util.*;
    import java.io.File;
    
    public class prob1 {
        public static void main(String[] args) {
            java.io.File file = new java.io.File("TestCase.txt");
    
            try {
                Scanner input = new Scanner(file);
                while (input.hasNext()) {
                    String num = input.nextLine();
                    System.out.println(num);
                }
            } catch (FileNotFoundException e) {
                System.err.format("File does not exist\n");
            }
        }
    }
    

1 个答案:

答案 0 :(得分:0)

您有String num = input.nextLine();所以现在您只需要使用num类的方法操作此String字符串。

例如,因为你说

  

前5个数字将是a,b,c,m和n

你可以这样做:

int a = -1, b = -1, c = -1, m = -1, n = -1;
...
while (input.hasNext()) {
    String num = input.nextLine().trim(); //I added trim to remove any extraneous whitespace
    //I'm assuming if one variable has not been initialized then none
    //  have since they all appear on the same line of the input file.
    //Also assuming that a, b, c, m, and n will always be positive 
    //  once they have been initialized.
    if(a < 0){
        String[] parts = num.split(" ");
        if(parts.length == 5){
            a = Integer.parseInt(parts[0]);
            b = Integer.parseInt(parts[1]);
            c = Integer.parseInt(parts[2]);
            m = Integer.parseInt(parts[3]);
            n = Integer.parseInt(parts[4]);
        }else{
            //There's a problem - more or less items than expected
            // so you will need to handle that somehow.
        }
    }
    ...
    //Processing for the ordered pairs...
    ...
    System.out.println(num);
}
...
//You'll probably want to handle the case where you get a 
//  NumberFormatException when the call to Integer.parseInt
//  fails. This can happen if the string passed to parseInt 
//  does not contain a valid integer value.