f1=1 2 1 2; f2=1 1;
выдает same=1;remove=2;same=1;remove=2;
в общем - вывод корректный
Подскажите как правильно вставить код на форуме.
не форматирует кода
import java.util.*;
import java.io.*;
class Solution {
public static List<LineItem> lines = new ArrayList<LineItem>();
public static void main(String[] args) throws IOException {
String sit="/storage/emulated/0/f.f.1\n/storage/emulated/0/f.f.2\n/storage7/emulated/0/f.f.12\n";
BufferedReader br=new BufferedReader(new InputStreamReader(new ByteArrayInputStream(sit.getBytes())));
//BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String f1=br.readLine();
String f2=br.readLine();
br.close();
f1="1\n2\n1\n2\n";f2="1\n1\n";
//if("1".equals("1"))System.out.println("is equal");
BufferedReader b1=new BufferedReader(new InputStreamReader(new ByteArrayInputStream(f1.getBytes())));BufferedReader b2=new BufferedReader(new InputStreamReader(new ByteArrayInputStream(f2.getBytes())));
//BufferedReader b1=new BufferedReader(new FileReader(f1));
//BufferedReader b2=new BufferedReader(new FileReader(f2));
ArrayList <String>a=new ArrayList<String>();
ArrayList <String>b=new ArrayList<String>();
String name;
while((name=b1.readLine())!=null){
a.add(name);
}
while((name=b2.readLine())!=null){
b.add(name);
}b1.close();b2.close();
int c=0;int d=0;
for(;d<a.size();){
//System.out.println(a.get(c)+"-"+b.get(d));
if (a.get(c).equals(b.get(d))){
lines.add(new LineItem(Type.SAME,a.get(c)));
c++;d++;
}else if(a.get(c+1).equals(b.get(d))){
lines.add(new LineItem(Type.REMOVED,a.get(c)));c++;
lines.add(new LineItem(Type.SAME,b.get(d)));c++;d++;
}else if(a.get(c).equals(b.get(d+1))){
lines.add(new LineItem(Type.ADDED,b.get(d)));d++;
lines.add(new LineItem(Type.SAME,a.get(c)));c++;d++;
}else{
c++;d++;
//System.out.println("ERRORR");
}
if(d>=b.size())break;
}
int ad=(a.size()-c);int bd=(b.size()-d);
if(ad>bd && ad!=bd){
lines.add(new LineItem(Type.REMOVED,a.get(c)));
}else if (ad<bd && ad!=bd){
lines.add(new LineItem(Type.ADDED,b.get(d)));
}
for(LineItem ss:lines){
System.out.println(ss.type+"="+ss.line);
}
ByteArrayOutputStream b3=new ByteArrayOutputStream();
}
public static enum Type {
ADDED, //добавлена новая строка
REMOVED, //удалена строка
SAME //без изменений
}
public static class LineItem {
public Type type;
public String line;
public LineItem(Type type, String line) {
this.type = type;
this.line = line;
}
}
}
package com.javarush.task.task19.task1916;
import java.util.ArrayList;
import java.util.List;
import java.io.*;
import java.util.*;
/*
Отслеживаем изменения
*/
public class Solution {
public static List<LineItem> lines = new ArrayList<LineItem>();
public static void main(String[] args) throws IOException {
String sit="/storage/emulated/0/f.f.1\n/storage/emulated/0/f.f.2\n/storage7/emulated/0/f.f.12\n";
//BufferedReader br=new BufferedReader(new InputStreamReader(new ByteArrayInputStream(sit.getBytes())));
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String f1=br.readLine();
String f2=br.readLine();
br.close();
//f1="1\n";f2="1\n2\n";
//FileReader fr1=new FileReader();
//FileReader fr2=new FileReader();
//if("1".equals("1"))System.out.println("is equal");
//BufferedReader b1=new BufferedReader(new InputStreamReader(new ByteArrayInputStream(f1.getBytes())));BufferedReader b2=new BufferedReader(new InputStreamReader(new ByteArrayInputStream(f2.getBytes())));
BufferedReader b1=new BufferedReader(new FileReader(f1));
BufferedReader b2=new BufferedReader(new FileReader(f2));
ArrayList <String>a=new ArrayList<String>();
ArrayList <String>b=new ArrayList<String>();
String name;
while((name=b1.readLine())!=null){
a.add(name);
}
while((name=b2.readLine())!=null){
b.add(name);
}b1.close();b2.close();
int c=0;int d=0;
for(;d<a.size();){
//System.out.println(a.get(c)+"-"+b.get(d));
if (a.get(c).equals(b.get(d))){
lines.add(new LineItem(Type.SAME,a.get(c)));
c++;d++;
}else if(a.get(c+1).equals(b.get(d))){
lines.add(new LineItem(Type.REMOVED,a.get(c)));c++;
lines.add(new LineItem(Type.SAME,b.get(d)));c++;d++;
}else if(a.get(c).equals(b.get(d+1))){
lines.add(new LineItem(Type.ADDED,b.get(d)));d++;
lines.add(new LineItem(Type.SAME,a.get(c)));c++;d++;
}else{
c++;d++;
//System.out.println("ERRORR");
}
if(d>=b.size())break;
}
int ad=(a.size()-c);int bd=(b.size()-d);
if(ad>bd && ad!=bd){
lines.add(new LineItem(Type.REMOVED,a.get(c)));
}else if (ad<bd && ad!=bd){
lines.add(new LineItem(Type.ADDED,b.get(d)));
}
for(LineItem ss:lines){
System.out.println(ss.type+"="+ss.line);
}
ByteArrayOutputStream b3=new ByteArrayOutputStream();
}
public static enum Type {
ADDED, //добавлена новая строка
REMOVED, //удалена строка
SAME //без изменений
}
public static class LineItem {
public Type type;
public String line;
public LineItem(Type type, String line) {
this.type = type;
this.line = line;
}
}
}