使用字符串拆分作为另一个方法的参数

时间:2018-05-04 05:14:57

标签: java

我有一个读取文本的文件阅读器 (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);    
                    }
                }
            }
        }
    }

2 个答案:

答案 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]);
  }

    }