Решил сделать эту задачу используя Регулярки !
И в принципе всё работает. Это меня радует. Но вот Валидатору что то не нравиться.
Подскажите что не так.
package com.javarush.task.task18.task1822;
/*
Поиск данных внутри файла
*/
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
// C:\Users\Stas\Desktop\Plan.txt
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new FileReader(new BufferedReader(new InputStreamReader(System.in)).readLine()));
String gat = args[0];
//создаём 4 Патерна для каждой строчки id productName price quantity
Pattern onerows = Pattern.compile("(id).{0,2}" + gat + ".{0,7}$?"); // в этот паттерн пихаем переменную , от аргумента
Pattern tworows = Pattern.compile("^(productName).{0,15}$?");
Pattern threerows = Pattern.compile("^(price).{0,10}$?");
Pattern fourrows = Pattern.compile("^(quantity).{0,15}$?");
int count = 0;
Matcher m = null;
while (reader.ready()){
String s = reader.readLine();
if (count == 0){
m = onerows.matcher(s); // сначала ищем по первому паттерну , итд...
}else if (count == 1){
m = tworows.matcher(s);
}else if (count == 2){
m = threerows.matcher(s);
}else if (count == 3){
m = fourrows.matcher(s);
}
if (m.find()){
System.out.println(m.group()); // И выводим на экран всё что нашли , совпадающи с нашими паттернами.
count++;
}
}
reader.close();
}
}
< public static void main(String[] args) throws Exception { BufferedReader reader = new BufferedReader(new FileReader(new BufferedReader(new InputStreamReader(System.in)).readLine())); String gat = args[0]; Pattern p = Pattern.compile(gat + ".*$"); while (reader.ready()){ String s = reader.readLine(); Matcher m = p.matcher(s); if (m.find()){ System.out.println(m.group()); } } reader.close(); } }>