我有一个读取文本的文件阅读器 (a,b)(b,c)(c,d)(f,g)(c,g)(c,t)(h,i)(j,y) 并显示
a,b
b,c ....
有没有办法使用这些索引作为我读完后立即调用的方法的参数?到目前为止,我似乎只在我在While
循环中时影响字符串分割,有没有办法获取值a并将其用于类似方法
add.edge(“argument0”,“argument1”)其中0是a,1是b?
代码:
import java.io.*;
class reader{
public static void main(String[] args)throws Exception{
File file = new File("test.txt");
BufferedReader fi = new BufferedReader(new FileReader(file));
String num;
int count = 0;
while ((num = fi.readLine()) !=null) {
String [] add = num.split(" ");
for(int i=0; i<add.length;i++){
String [] add2 =add[i].split("[)(]+");
for (String val: add2){
System.out.println(val);
}
}
}
}
}
答案 0 :(得分:0)
如果要在while循环外使用split函数的结果,则需要将结果保存到while循环之前定义的变量。这是因为当前在for循环内部的add2变量的范围,因此您只能在for循环中使用它。如果你想保存字符串对,那么我建议创建一个帮助类Pair:
class Pair {
private String el1;
private String el2;
public Pair(String el1, String el2) {
this.el1 = el1;
this.el2 = el2;
}
// getters
}
并列出在while循环之前定义的对:
List<Pair> pairs = new ArrayList<>();
并在for循环中,将新对添加到列表中:
pairs.add(new Pair(add2[0], add[1])));
然后你可以访问while循环之外的列表元素,如下所示:
for (Pair pair : pairs) {
add.edge(pair.getEl1(), pair.getEl2());
}
答案 1 :(得分:0)
我认为你正在尝试实现以下内容:D 我改变了你的代码我使用子字符串而不是正则表达式
import java.io.*;
class reader{
public static void main(String[] args)throws Exception{
File file = new File("test.txt");
BufferedReader fi = new BufferedReader(new FileReader(file));
String num;
int count = 0;
while ((num = fi.readLine()) !=null) {
String [] add = num.split(" ");
for(int i=0; i<add.length;i++){
String pair = add[i].substring(1, 4);
someFunction(pair.split(","));
}
}
}
public static void someFunction(String[] args)
{
if(args.length > 0)
System.out.println(args[0] + " and " + args[1]);
}
}