Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 使用阵列实现灵活性_Java_Arrays_Bufferedreader - Fatal编程技术网

Java 使用阵列实现灵活性

Java 使用阵列实现灵活性,java,arrays,bufferedreader,Java,Arrays,Bufferedreader,在程序的一部分中,我正在读取包含“ua”的行,并将它们设置为我要处理的行数。我想使用数组使其灵活到我想要的行数 这就是它在4行中的工作方式 我不想有多个else if语句,而是想简化它,这样我就可以定义一些要处理的行,而不必编辑这部分 try (BufferedReader br = new BufferedReader(new FileReader(f.getAbsolutePath()))) { String line1 = null, line2 = null, line3 =

在程序的一部分中,我正在读取包含
“ua”
的行,并将它们设置为我要处理的行数。我想使用数组使其灵活到我想要的行数

这就是它在4行中的工作方式


我不想有多个else if语句,而是想简化它,这样我就可以定义一些要处理的行,而不必编辑这部分

try (BufferedReader br = new BufferedReader(new FileReader(f.getAbsolutePath()))) {

    String line1 = null, line2 = null, line3 = null, line4 = null, line = null;
    boolean firstLineMet = false;
    boolean secondLineMet = false;
    boolean thirdLineMet = false;

    while ((line = br.readLine()) != null) {
        if (line.contains("ua, ")) {

            if (!firstLineMet) {
                line1 = line;
                firstLineMet = true;
            } else if (!secondLineMet) {
                line2 = line;
                secondLineMet = true;
            } else if (!thirdLineMet) {
                line3 = line;
                thirdLineMet = true;
            } else {
                line4 = line;
                ProcessLines(uaCount, line1, line2, line3, line4);
                line1 = line2;
                line2 = line3;
                line3 = line4;
            }
        }
    }
}

假设可以在内存中读取整个文件,您可以使用
文件提供的方便方法:

List<String> lines = Files.readAllLines(yourFile, charset);
ProcessLines(uaCount, lines.get(0), lines.get(1), ...);
List line=Files.readAllLines(您的文件,字符集);
处理行(uaCount、lines.get(0)、lines.get(1),…);
或者,如果要按顺序处理这些行,但仅限于某个限制:

for (int i = 0; i < limit && i < lines.length(); i++) {
    processLine(lines.get(i));
}
for(int i=0;i
您可以通过以下方式实现您的目标

int counter = 0;
int limit = 3; // set your limit
String[] lines = new String[limit];
boolean[] lineMet = new boolean[limit];

while ((line = br.readLine()) != null) {
    if (line.contains("ua, ")) {
        lines[counter] = line;
        lineMet[counter] = true; // doesn't make any sense, however
        counter++;
    }
    if (counter == limit){
    // tweak counter otherwise previous if will replace those lines with new ones
        counter = 0; 
        ProcessLines(uaCount, lines); // send whole array 
        lines[0] = lines[1]; // replace first line with second line
        lines[1] = lines[2]; // replace second line with third line
        lines[2] = lines[3]; // replace third line with fourth line

        // ProcessLines(uaCount, lines[0], lines[1], lines[2], lines[3]);
        // Do Something
    }
}

我希望这将对您有所帮助。

您尝试过解决方案吗?请向我们说明。你的问题是什么?我不想有多个else if语句,我想简化它,这样我就可以定义一些我想处理的行,而不必编辑这个部分。这就是我想做的。我的目标是能够改变一个变量,让我们称之为
lineNumber
,这将得到我所需要的。我想这就是我的答案。在这里,我使用
limit
变量并发送整个数组,这样您就不必依赖于有多少行了。好的,但在我处理这些行之后,我如何将它们设置为下一行呢?这是我最初的问题,我如何设置
line1=line2
line2=line3
,等等,这很简单
lines[0]=lines[1]..
但是你必须调整
计数器来满足你的需要,我真的不知道。如果你能澄清这一点,那么我就很容易帮上忙了。还更新了答案。