Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将特定格式的文件读入ArrayList_Java_Arraylist_Filereader - Fatal编程技术网

Java 将特定格式的文件读入ArrayList

Java 将特定格式的文件读入ArrayList,java,arraylist,filereader,Java,Arraylist,Filereader,我有此特定格式的文件: 0 2 4 0 1 A 0 5 B 1 1 A 1 3 B 2 6 A 2 4 B 3 6 A 3 4 B 4 6 A 4 4 B 5 1 A 5 5 B 6 6 A 6 2 B 0 2 4 01 A 0.5 B 11A 13b 26 A 2.4 B 36A 34 B 46A 4 B 51A 5 B 6 A 6.2 B 第1行=开始状态 第2行=接受状态 第3行-n=转换表 第1行=中的状态 第二行=状

我有此特定格式的文件:

0 2 4 0 1 A 0 5 B 1 1 A 1 3 B 2 6 A 2 4 B 3 6 A 3 4 B 4 6 A 4 4 B 5 1 A 5 5 B 6 6 A 6 2 B 0 2 4 01 A 0.5 B 11A 13b 26 A 2.4 B 36A 34 B 46A 4 B 51A 5 B 6 A 6.2 B
  • 第1行=开始状态
  • 第2行=接受状态
  • 第3行-n=转换表
  • 第1行=中的状态
  • 第二行=状态输出
  • A、 B=符号
我的Java
FileReader如何将这些文件读入5个不同的
ArrayList
s(开始状态、最终状态、状态输入、状态输出和符号)?

这里最好使用一个:

静态类状态{
int-in;
指出;
字符串符号;
状态(整数输入、整数输出、字符串符号){
this.in=in;
this.out=out;
这个符号=符号;
}
@凌驾
公共字符串toString(){
返回输入+“”+输出+“”+符号;
}
}
公共静态void main(字符串[]args)引发FileNotFoundException{
扫描仪s=新扫描仪(新文件(“input.txt”);
int startState=Integer.parseInt(s.nextLine());
List acceptStates=new LinkedList();
列表状态=新建LinkedList();
Scanner st=新的扫描仪(s.nextLine());
而(st.Hasnetint())
add(st.nextInt());
而(s.hasnetint())
添加(新状态(s.nextInt(),s.nextInt(),s.next());
系统输出打印LN(开始状态);
System.out.println(接受状态);
系统输出打印(状态);
//逻辑。。。
}
最好在此处使用:

静态类状态{
int-in;
指出;
字符串符号;
状态(整数输入、整数输出、字符串符号){
this.in=in;
this.out=out;
这个符号=符号;
}
@凌驾
公共字符串toString(){
返回输入+“”+输出+“”+符号;
}
}
公共静态void main(字符串[]args)引发FileNotFoundException{
扫描仪s=新扫描仪(新文件(“input.txt”);
int startState=Integer.parseInt(s.nextLine());
List acceptStates=new LinkedList();
列表状态=新建LinkedList();
Scanner st=新的扫描仪(s.nextLine());
而(st.Hasnetint())
add(st.nextInt());
而(s.hasnetint())
添加(新状态(s.nextInt(),s.nextInt(),s.next());
系统输出打印LN(开始状态);
System.out.println(接受状态);
系统输出打印(状态);
//逻辑。。。
}

查看,使用
ArrayList
s建立列表。

查看,使用
ArrayList
s建立列表。

您可以使用该类读取文件()。由于您知道所需项的位置,因此可以使用该方法在任意ArrayList中解析输入字符串。

您可以使用该类读取文件()。既然您知道所需项的位置,那么就可以使用该方法在任意数组列表中解析输入字符串。

为什么不使用一个简单的
BufferedReader
?您能再解释一下吗?我是新来的java@thejh例如我不明白你的确切意思@金:你知道文件的前两行是开始状态和接受状态。另外,您知道从第3行到第n行,需要将这些行拆分为行。所以基本上,用一个计数器做一个while循环,根据计数器的值,你知道你在哪一行工作,因此你可以相应地填充ArrayList。请查看我提供的链接,以便更好地了解如何实现这样的系统。hhmm,。所以我必须让一个while循环读取每一行的内容,while循环将这些行的内容发送到不同的arraylist?是的。阅读这些行,必要时将其拆分。由于所有数据都有一个固定的位置,您应该能够将正确的数据放在正确的arraylist中。为什么不使用一个简单的
BufferedReader
?您能再解释一下吗?我是新来的java@thejh例如我不明白你的确切意思@金:你知道文件的前两行是开始状态和接受状态。另外,您知道从第3行到第n行,需要将这些行拆分为行。所以基本上,用一个计数器做一个while循环,根据计数器的值,你知道你在哪一行工作,因此你可以相应地填充ArrayList。请查看我提供的链接,以便更好地了解如何实现这样的系统。hhmm,。所以我必须让一个while循环读取每一行的内容,while循环将这些行的内容发送到不同的arraylist?是的。阅读这些行,必要时将其拆分。由于所有数据都有一个固定的位置,您应该能够将正确的数据放在正确的arraylist中。我认为OP希望第二行成为接受状态的列表。如果我在字符串中使用“in”和“out”而不是int,它的代码是否相同?几乎,使用next()而不是nextInt()然后。我认为OP希望第二行成为接受状态的列表。如果我在字符串中使用'in'和'out'而不是int,它的代码是否相同?几乎,使用next()而不是nextInt()然后。从它的javadoc:StringTokenizer是一个遗留类,尽管在新代码中不鼓励使用它,但出于兼容性原因保留它。从它的javadoc:StringTokenizer是一个遗留类,尽管在新代码中不鼓励使用它,但出于兼容性原因保留它。
static class State {
    int in;
    int out;
    String symbol;

    State(int in, int out, String symbol) {
        this.in = in;
        this.out = out;
        this.symbol = symbol;
    }

    @Override
    public String toString() {
        return in + " " + out + " " + symbol;
    }
}

public static void main(String[] args) throws FileNotFoundException {

    Scanner s = new Scanner(new File("input.txt"));

    int startState = Integer.parseInt(s.nextLine());
    List<Integer> acceptStates = new LinkedList<Integer>();
    List<State> states = new LinkedList<State>();

    Scanner st = new Scanner(s.nextLine());
    while (st.hasNextInt())
        acceptStates.add(st.nextInt());

    while (s.hasNextInt())
        states.add(new State(s.nextInt(), s.nextInt(), s.next()));

    System.out.println(startState);
    System.out.println(acceptStates);
    System.out.println(states);

    // logic...
}